su 与 su - (在 Debian 上):为什么 PATH 相同?

su 与 su - (在 Debian 上):为什么 PATH 相同?

su我知道和之间应该有什么区别su -,但在我的系统(Debian)中PATH是相同的:

[root]# su
[root]# echo $PATH
/user_path/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root]# exit
[root]$ su -
[root@debian ~]# echo $PATH
/user_path/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

所以我开始认为可以在配置文件中更改设置。

答案1

要配置su PATH,请查看/etc/login.defs

ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

还有一些其他地方PATH可以更改,包括:

  • /etc/environment
  • /etc/bash.bashrc
  • /etc/profile
  • /etc/profile.d/*
  • ~/.bashrc
  • ~/.bash_profile

在每用户设置中没有任何特殊的内容,su似乎是从 获取其环境PATH/etc/environment并且su -似乎是从 获取其环境/etc/login.defs ENV_SUPATH

因此,在您的系统上,我的猜测是您在 中具有与 中相同的PATH值,或者您在 , 中具有一些额外的配置,或者在 中具有一些 rc 文件。/etc/login.defs/etc/environment/etc/profile.d/etc/bash.bashrc/home/someuser

答案2

参数-表示启动环境,与该用户的登录环境几乎相同。

没有-环境与原始用户的环境相同。

例如,PATHroot 用户和普通用户通常是相同的。在某些系统中sbin,普通用户没有文件夹。您无法-轻松禁用su。当然你可以去编辑源代码。

你可以通过运行来尝试这个

export FOO=bar
su # enter your password
echo $FOO
logout
su - # enter your password again
echo $FOO

第一次echo $FOO打印“bar”,第二次打印为空。

相关内容