“sudo su -” 与 “sudo -i” 和 /etc/environment

“sudo su -” 与 “sudo -i” 和 /etc/environment

apt-get update在我经常更新(随后)的 Ubuntu 14.04 主机上,apt-get full-upgrade我有一个/etc/environment包含一些关键变量的文件。

直到最近sudo -i -u fred env才会显示在fred登录环境中环境变量FOO被设置为来自的值/etc/environment

在过去的几天里(可能是由于更新;我没有太注意)sudo -l -u fred env不再有来自的变量/etc/environment。但是,sudo su - fred -c env显示确实su -设置了这些变量。

这是怎么回事?应该不sudo -i完全一样,sudo su -但由于没有在组合中包含额外的程序,所以可能更可靠?

PAM 配置

所有各种/etc/pam.d/文件的内容似乎与发行版中的内容没有明显变化,但很难完全确定这一点,尤其是在 16.04 主机上,我无法访问 etckeeper 日志。下面我提供了来自 Ubuntu 14.04 主机的信息,其中演示了问题,而 Ubuntu 16.04 和 18.04 主机没有演示问题。以下所有示例中的注释均已删除。

/etc/pam.d/sudo在所有主机上都相同:

#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

/etc/pam.d/common-auth主机之间略有不同。14.04/18.04 版本如下;16.04 主机缺少最后pam_cap.so一行:

auth    [success=1 default=ignore]  pam_unix.so nullok_secure
auth    requisite           pam_deny.so
auth    required            pam_permit.so
auth    optional            pam_cap.so

/etc/pam.d/common-account在所有主机上都相同:

account [success=1 new_authtok_reqd=done default=ignore]    pam_unix.so 
account requisite           pam_deny.so
account required            pam_permit.so

/etc/pam.d/common-session-noninteractive在所有主机上都相同:

session [default=1]         pam_permit.so
session requisite           pam_deny.so
session required            pam_permit.so
session optional            pam_umask.so
session required    pam_unix.so

相关内容