我UMASK将 /etc/login.defs 中的设置设置为 077,但是当我登录并查询它时,我得到以下信息:
$ umask
0007
Run Code Online (Sandbox Code Playgroud)
事实证明,在现代 Linux 发行版中,PAM的 pam_umask.so 模块控制UMASK从 /etc/login.defs读取设置。但是,它会调整在某些情况下使用的值,如pam_umask(8) 所述:
PAM 模块尝试按以下顺序从以下位置获取 umask 值:
·
umask=论据·
umask=在用户的 GECOS 字段中输入·
UMASK=来自 /etc/default/login 的条目·
UMASK从/etc/login.defs 进入(受/etc/login.defs 影响USERGROUPS_ENAB)
请参阅 Ubuntu 主机上的 /etc/pam.d/common-session 以了解如何pam_umask.so调用。
根据 /etc/login.defs 中的评论:
如果 USERGROUPS_ENAB 设置为“yes”,那将修改私有用户组的这个 UMASK 默认值,即 uid 与 gid 相同,用户名与主组名称相同:对于这些,将使用用户权限作为组权限,例如 022 将变为 002。
因此,它被认为是标准行为。我建议不要禁用,USERGROUPS_ENAB因为这将在用户创建时停止创建相应的组。要在不更改此行为的情况下强制设置 umask,请创建 /etc/default/loginUMASK=077并UMASK 077在 /etc/login.defs 中注释掉。
(PAM = 可插拔认证模块)