我有以下行/etc/environment
:
AAABBB=cccddd
当我使用文本控制台登录时,变量已设置,我什至不需要重新启动。但如果我这样做su -
,变量就会被清除。这是为什么?
我在 ArchLinux 以及 CentOS 6 和 7 上都有这个。
这里重力 说:
注销并重新登录将应用更改
但su
用破折号发出命令就是这样!
我真的很不高兴su -
清除变量。有没有办法让su表现得更好?一种解决方法是复制 中的记录/etc/profile.d
。仅在 profile 中包含记录而不是在 中是不够的/etc/environment
,因为在某些情况下未获取配置文件脚本,例如scp
。
更新
[root@reallin ~]# cat /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
[root@reallin ~]# cat /etc/pam.d/su-l
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
答案1
尽管su -l <user>
在我的系统上工作正常,但我注意到sudo su -l <user>
- 尽管它很好地拾取“.profile” - 似乎会导致与您描述的清除“/etc/environment”中普遍设置的变量相同的问题。
我能够<user>
通过执行以下操作获得看似完整的登录(执行“.profile”加上“/etc/environment”中的变量):
sudo -i -u <user>