为什么 Debian 为 root 用户设置了与其他用户不同的 PATH?为什么不为所有用户包含“sbin”目录?

为什么 Debian 为 root 用户设置了与其他用户不同的 PATH?为什么不为所有用户包含“sbin”目录?

在使用网络安装程序全新安装 Debian 11“Bullseye”(旨在用作服务器)时,root 具有以下路径:

root@debian:~# echo $PATH | tr : '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

而任何其他用户都有以下 PATH:

jivan@debian:~$ echo $PATH | tr : '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games

此行为来自于 开头的几行/etc/profile

if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

但为什么这是默认行为呢?来自 Ubuntu 服务器,所有用户在他们的 PATH 中都有/usr/sbin/usr/local/sbin(我提到的那些行在/etc/profileUbuntu 安装中不存在),这是不和谐的;我无法运行/自动完成许多我想以非 root 身份运行的命令。我已经添加了一行来/etc/profile.d“修复”这个问题,但我想知道为什么这是默认的。

答案1

来自文件系统层次结构标准

3.16。 /sbin :系统二进制文件 3.16.1。用途 用于系统管理的实用程序(以及其他仅限 root 用户的命令)存储在 /sbin、/usr/sbin 和 /usr/local/sbin 中。

所以我们可以看到/sbin(和朋友)应该只具有可能需要root正确运行的管理级别命令。您的普通用户不需要它们,并且如果尝试运行它们可能会出现错误。

在仅由具有管理员权限(例如通过 )的单个用户使用的计算机上,sudo那么添加这些目录可能是有意义的。在具有管理员和非管理员的多用户计算机上,管理员修改自己的$HOME/.profile.

相关内容