会话开始时未应用默认 umask 077

d_i*_*ble 6 login pam umask linux-mint

我无法将会话的默认 umask 设为0077.

我已经编辑/etc/login.defs并将值设置为077

UMASK           077
Run Code Online (Sandbox Code Playgroud)

我还确保以下条目存在于/etc/pam.d/common-session

session optional                        pam_umask.so
Run Code Online (Sandbox Code Playgroud)

虽然此配置在用户使用su它登录时似乎有效,但在通过 mdm 登录时却无效。pam.d 中的 mdm 和 su 配置文件都包含 common-session。

username@hostname ~ $ umask
0022
username@hostname ~ $ su username
Password:
username@hostname ~ $ umask
0077
Run Code Online (Sandbox Code Playgroud)

使用 GDM 或 LIGHTDM 而不是 MDM 时不会发生此问题。

关于可能是什么原因的任何想法?

slm*_*slm 3

这并不能直接回答您的问题,但此技术可能会帮助您了解是否有一个杂散umask命令作为 shell 配置文件的一部分在某处运行:

$ bash -x -l -i -c 'exit' 2>&1 | grep 'umask'
Run Code Online (Sandbox Code Playgroud)
  • -x-> 启用调试
  • -l-> 登录外壳
  • -i-> 交互式外壳
  • -c-> 命令

exit是必要的,以便 shell 在完成后返回。

例子

$ bash -x -l -i -c 'exit' 2>&1 | grep umask
+ umask 002
$
Run Code Online (Sandbox Code Playgroud)

我在这个 U&L Q&A 中发现了上述技术,标题为:How to test for possibleconflict while using alias in bashrc?