Linux 为什么不尊重/etc/login.defs中的UMASK设置?

Linux 为什么不尊重/etc/login.defs中的UMASK设置?,linux,pam,umask,Linux,Pam,Umask,我将/etc/login.defs中的UMASK设置设置为077,但当我登录并查询它时,我得到以下信息: $ umask 0007 事实证明,在现代Linux发行版中,pam_umask.so模块控制从/etc/login.defs读取umask设置。但是,它会调整某些情况下使用的值,如下所述: PAM模块尝试从以下位置获取umask值 按以下顺序: ·umask=参数 ·umask=用户GECOS字段中的条目 ·UMASK=来自/etc/default/login的条目 ·UMASK来自/e

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

$ umask
0007

事实证明,在现代Linux发行版中,pam_umask.so模块控制从/etc/login.defs读取
umask
设置。但是,它会调整某些情况下使用的值,如下所述:

PAM模块尝试从以下位置获取umask值 按以下顺序:

·
umask=
参数

·
umask=
用户GECOS字段中的条目

·
UMASK=
来自/etc/default/login的条目

·
UMASK
来自/etc/login.defs的条目(受 /etc/login.defs)

查看Ubuntu主机上的/etc/pam.d/common-session,了解如何调用
pam_umask.so

根据/etc/login.defs中的注释:

如果USERGROUPS_ENAB设置为“yes”,则将修改此UMASK默认值 对于私有用户组,即。Euid与gid相同,用户名为 与主组名相同:对于这些组,用户权限将为 用作组权限,例如。G022将变成002

因此,它被视为标准行为。我建议不要禁用
USERGROUPS\u ENAB
,因为这样会在用户创建时停止创建相应的组。要在不更改此行为的情况下强制设置umask,请创建/etc/default/login,其中包含
umask=077
,并在/etc/login.defs中注释掉
umask 077


(PAM=Pluggable Authentication Modules)

事实证明,在现代Linux发行版中,PAM_umask.so模块控制从/etc/login.defs读取
umask
设置。但是,它会调整某些情况下使用的值,如下所述:

PAM模块尝试从以下位置获取umask值 按以下顺序:

·
umask=
参数

·
umask=
用户GECOS字段中的条目

·
UMASK=
来自/etc/default/login的条目

·
UMASK
来自/etc/login.defs的条目(受 /etc/login.defs)

查看Ubuntu主机上的/etc/pam.d/common-session,了解如何调用
pam_umask.so

根据/etc/login.defs中的注释:

如果USERGROUPS_ENAB设置为“yes”,则将修改此UMASK默认值 对于私有用户组,即。Euid与gid相同,用户名为 与主组名相同:对于这些组,用户权限将为 用作组权限,例如。G022将变成002

因此,它被视为标准行为。我建议不要禁用
USERGROUPS\u ENAB
,因为这样会在用户创建时停止创建相应的组。要在不更改此行为的情况下强制设置umask,请创建/etc/default/login,其中包含
umask=077
,并在/etc/login.defs中注释掉
umask 077


(PAM=可插拔的身份验证模块)

只有在创建用户时才使用/etc/login.defs中的umask值,并将其应用于用户的主目录

用户的默认umask在/etc/profile中确定。(不适用于基于Debian的发行版)

您可以在~/.bash_配置文件中更改特定用户umask


我还认为USERGROUPS_ENAB=yes强制执行UPG(通用专用组),并且对umask值没有任何影响。(我可能错了)

在/etc/login.defs中的umask值仅在创建用户时使用,并应用于用户的主目录

用户的默认umask在/etc/profile中确定。(不适用于基于Debian的发行版)

您可以在~/.bash_配置文件中更改特定用户umask


我还认为USERGROUPS_ENAB=yes强制执行UPG(通用专用组),并且对umask值没有任何影响。(我可能错了)

您提到只有在创建用户时才使用/etc/login.defs设置。这不是我在回答中引用的pam_umask(8)手册中读到的内容。您对此有何参考?您提到/etc/login.defs设置仅在创建用户时使用。这不是我在回答中引用的pam_umask(8)手册中读到的内容。您对此有何参考?您的
/etc/default/login
方法听起来很优雅,但并没有为我这样做(可能机器需要重新启动吗?)。我最终在
/etc/profile.d/
中创建了一个调用
umask002
的小shell脚本。(设置
UMASK=002
也不起作用)我同意@florian。在CentOS 7上,
/etc/profile
将umask显式设置为002(如果
uid>199
uid=gid
)或022。绕过它的唯一方法是使用
/etc/profile.d
中的脚本覆盖它。您所描述的似乎只适用于类似debian的发行版。在CentOS 7上,不使用pam_umask。您的
/etc/default/login
方法听起来很优雅,但没有为我这样做(可能机器需要重新启动吗?)。我最终在
/etc/profile.d/
中创建了一个调用
umask002
的小shell脚本。(设置
UMASK=002
也不起作用)我同意@florian。在CentOS 7上,
/etc/profile
将umask显式设置为002(如果
uid>199
uid=gid
)或022。绕过它的唯一方法是使用
/etc/profile.d
中的脚本覆盖它。您所描述的似乎只适用于类似debian的发行版。在CentOS 7上,不使用pam_umask。