为什么不遵守 /etc/login.defs 中的 UMASK 设置?

Ala*_*ine 1 linux umask pam

UMASK将 /etc/login.defs 中的设置设置为 077,但是当我登录并查询它时,我得到以下信息:

$ umask
0007
Run Code Online (Sandbox Code Playgroud)

Ala*_*ine 6

事实证明,在现代 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=077UMASK 077在 /etc/login.defs 中注释掉。

(PAM = 可插拔认证模块)