Ubuntu 20.04下无法定位用户umask 0002的设置位置
我来帮你梳理几个容易漏掉的排查方向,毕竟umask的设置位置有时候确实藏得挺隐蔽的😉
检查PAM会话配置:Ubuntu的用户登录会话很多时候会通过PAM模块来设置umask,你可以搜索所有PAM相关的配置文件:
grep -r "umask" /etc/pam.d/重点看
common-session和common-session-noninteractive这两个文件,里面可能有pam_umask.so的配置项,甚至直接指定了umask值。排查profile系列文件:你之前搜了
~/.bash*,但别忘了login shell还会读取~/.profile,以及系统级的/etc/profile和/etc/profile.d/目录下的所有脚本。可以用这条命令一次性搜索:grep -r "umask" ~/.profile /etc/profile* /etc/profile.d/很多系统会把全局的umask设置放在
/etc/profile.d/下的某个自定义脚本里,容易被忽略。图形会话相关配置:如果你平时用图形界面登录,那还要检查
~/.xsessionrc或者/etc/X11/Xsession.d/下的文件,这些地方可能在启动桌面会话时悄悄设置了umask。检查是否有被引用的其他脚本:看看你的
~/.bashrc或者~/.profile里有没有source其他自定义脚本的语句,比如有些用户会把配置拆分到多个文件里,umask可能就藏在那些被引用的文件中。
另外补充一点:你通过ssh登录bash时是用户的login shell,会加载上述的login相关配置;而su - root切换到root的login shell,加载的是root用户的配置,所以两者umask不同是正常的,重点还是排查你自己用户会话的配置链。
备注:内容来源于stack exchange,提问作者Lisanna Dettwyler

