比较 Debian(左)和 Ubuntu(右):
$ ifconfig $ ifconfig
bash: ifconfig: command not found eth0 Link encap ...
$ which ifconfig $ which ifconfig
$ /sbin/ifconfig
然后作为超级用户:
# ifconfig # ifconfig
eth0 Link encap ... eth0 Link encap ...
# which ifconfig # which ifconfig
/sbin/ifconfig /sbin/ifconfig
此外:
# ls -l /sbin/ifconfig # ls -l /sbin/ifconfig
-rwxr-xr-x 1 root root 68360 ... -rwxr-xr-x 1 root root 68040 ...
在我看来,我无法ifconfig
在没有超能力的情况下在 Debian 上运行的唯一原因是它不在我的道路上。当我使用/sbin/ifconfig
它时确实有效。
有什么理由我应该不是添加/usr/local/sbin:/usr/sbin:/sbin
到我在 Debian 上的路径?这是一台个人电脑,我是唯一的人类用户。
使用的版本 ( uname -a
):
Ubuntu:
Linux ubuntu 3.13.0-51-generic #84-Ubuntu SMP Wed Apr 15 12:08:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Debian:
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux
答案1
在里面Debian 政策据说 Debian 遵循文件层次结构标准2.3 版。注意#19标准上说:
决定将哪些内容放入“sbin”目录很简单:如果普通(非系统管理员)用户将直接运行它,那么它必须放置在“bin”目录之一中。普通用户不必在其路径中放置任何 sbin 目录。
例如,chfn等用户偶尔使用的文件仍然必须放在/usr/bin中。 ping,尽管它对于 root(网络恢复和诊断)来说是绝对必要的,但用户经常使用它,因此必须驻留在 /bin 中。
我们建议用户对 /sbin 中的所有内容拥有读取和执行权限,也许某些 setuid 和 setgid 程序除外。 /bin 和 /sbin 之间的划分并不是出于安全原因或防止用户查看操作系统,而是为了在每个人都使用的二进制文件和主要用于管理任务的二进制文件之间提供良好的分区。禁止用户使用 /sbin 并没有固有的安全优势。
简短回答:
我有什么理由不应该添加
/usr/local/sbin:/usr/sbin:/sbin
到 Debian 上的路径吗?
正如注释中所述,您没有理由不这样做。由于您是唯一使用该系统的人,并且您需要目录中的二进制文件sbin
,因此请随意将它们添加到您的$PATH
.此时,让我引导您很好的答案如何正确地做到这一点。
答案2
不添加它们的唯一原因是,它会使命令的制表符补全速度变慢(因为搜索更多目录)并且效率较低(因为更有可能出现来自对非 root 用户没有意义的命令的虚假匹配) )。