有人可以向我解释一下吗?为什么当通过 root 登录时,我可以发出ifconfig
并执行它。在创建新用户后,我发现ifconfig
它无法找到该包。
bash 输出
user@hostname:~$ ifconfig
bash: ifconfig: command not found
user@hostname:~$ locate ifconfig
/sbin/ifconfig
user@hostname:~$ /sbin/ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.121 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ba27:ebff:fe2e:b2d prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:2e:0b:2d txqueuelen 1000 (Ethernet)
RX packets 2476 bytes 228711 (223.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1942 bytes 275732 (269.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
我认为区别在于特权?即 sbin - 根要求
仅在我的某些系统上,我可以在不需要 Sudo 的情况下发出 ifconfig 。
那么为什么只指定路径 sbin 就可以执行真正需要 root 权限的东西呢?
我有点困惑,或者我的用户是否因允许 sbin 执行而配置不正确?
第一个基于 Debian 的系统(我是一个 arch 用户,以前从未遇到过这个问题)
答案1
这是默认造成的PATH
:root
默认PATH
包含/sbin
,标准用户默认PATH
不包含。比较/etc/profile
和的内容/root/.profile
...