为什么新用户的 $PATH 中不包含 `/sbin`?

为什么新用户的 $PATH 中不包含 `/sbin`?

ifconfig位于。我在 root 用户中/sbin/ifconfig发出命令没有遇到问题。ifconfig

当我创建新用户时,问题就开始出现了。

root@Ubuntu:~# useradd -m user
root@Ubuntu:~#

root@Ubuntu:~# passwd user
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@Ubuntu:~# 

root@Ubuntu:~# su user
user@Ubuntu:/root$ id
uid=1003(user) gid=1003(user) groups=1003(user)
user@Ubuntu:/root$ 

ifconfig在新用户中找不到。

user@Ubuntu:~$ ifconfig
-su: ifconfig: command not found
user@Ubuntu:~$ 

临时解决方法是从完整路径执行/sbin/ifconfig

user@Ubuntu:~$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
user@Ubuntu:~$ 

user@Ubuntu:~$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr AA:AA:AA:AA:AA:AA
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
user@Ubuntu:~$

ifconfig未找到,因为/sbin在新用户环境中不再配置。

user@Ubuntu:~$ echo $PATH
/home/user/bin:/home/user/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
user@Ubuntu:~$ 

user@Ubuntu:~$ echo $PATH | grep sbin
user@Ubuntu:~$ 

我没有在 root 用户上看到此问题,因为这/sbin是默认情况下的一部分$PATH

root@Ubuntu:~# ifconfig 
eth0      Link encap:Ethernet  HWaddr AA:AA:AA:AA:AA:AA
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0

root@Ubuntu:~# echo $PATH | grep sbin
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@Ubuntu:~# 
  1. 问题是为什么/sbin默认情况下不包含?这不会给用户带来麻烦吗?

  2. 如何确保/sbin自动添加$PATH而不是为每个用户手动修改?

答案1

/sbin目录用于系统维护和/或管理工具。因此只有管理员可以使用它,并且您的 $PATH 中没有此目录。您可以在文件系统层次结构标准中阅读更多内容跳频

为变量添加新值的正确位置$PATH是用户~/.profile文件或系统/etc/profile文件。通常已经有一行,$PATH因此您只需将其添加/sbin到行首即可。或者只需在文件末尾添加此行:

PATH="/sbin:$PATH"

您还可以编辑/etc/skel/.profile文件。当您创建新文件时,此文件将被复制到用户的主目录。但是,如果您想让所有用户都拥有此功能,请更改/etc/profile

相关内容