我将 /etc/login.defs 中的
UMASK
设置设置为 077,但是当我登录并查询它时,我得到以下信息:
$ umask
0007
事实证明,在现代 Linux 发行版中,PAM 的 pam_umask.so 模块控制从 /etc/login.defs 读取
UMASK
设置。但是,它会调整在某些情况下使用的值,如 pam_umask(8): 所述
PAM模块尝试从以下位置获取umask值 按以下顺序:
·
争论umask=
·
用户 GECOS 字段中的条目umask=
·
/etc/default/login 中的条目UMASK=
·
来自 /etc/login.defs 的条目(受UMASK
的影响) /etc/login.defs)USERGROUPS_ENAB
请参阅 Ubuntu 主机上的 /etc/pam.d/common-session 以了解如何调用
pam_umask.so
。
根据 /etc/login.defs 中的评论:
如果 USERGROUPS_ENAB 设置为“yes”,则会修改此 UMASK 默认值 对于私人用户组,i。 e. uid 与 gid 相同,用户名是 与主组名称相同:对于这些组,用户权限将为 用作组权限,例如G。 022 将变成 002。
因此,这被认为是标准行为。我建议不要禁用
USERGROUPS_ENAB
,因为这会在用户创建时停止创建相应的组。要强制设置 umask 而不更改此行为,请创建包含 UMASK=077
的 /etc/default/login 并在 /etc/login.defs 中注释掉 UMASK 077
。
(PAM = 可插入身份验证模块)
/etc/bashrc 或 /etc/profile 中必须设置不同的 umask 值。 该值必须优先
/etc/login.defs 中的 umask 值仅在创建用户时使用,并应用于用户的主目录
用户的默认 umask 在 /etc/profile 中确定。 (不适用于基于 Debian 的发行版)
您可以在 ~/.bash_profile 中更改特定用户的 umask
我还相信 USERGROUPS_ENAB=yes 强制执行 UPG(通用私有组)并且对 umask 值没有任何影响。 (我可能是错的)