在最新版本的 OS X (10.6+) 中,该sudo
命令默认采用 0022 和调用者的用户掩码的“并集”(按位或)。如果 umask 比 0022 更严格,这可能会导致问题:例如,调用者可能无法访问由 sudo 创建的文件。相关文章,我如何告诉 sudo 用 umask 0022 写入文件?,给出了一些选项;即这个答案告诉我们在 10.7+ 中,我们只需在/etc/sudoers
文件中添加两行:
Defaults umask_override
Defaults umask=0022
对我来说,这解决了该问题(即使用 umask 0022)sudo
,但是通过命令切换到 root 时却没有解决问题su
(我正在运行 OS X 10.7.5)。
问题:如何配置 OX X(版本 10.7+),以便在通过 切换到 root 用户时使用 umask 0022 su
,而不管调用者的 umask 是多少?
我更希望找到一种不简单地重新定义su
命令的解决方案。请注意,这man sudoers
表明 PAM 配置可能相关:
umask: Umask to use when running the command. Negate this option or set it to 0777 to
preserve the user's umask. The actual umask that is used will be the union of the
user's umask and 0022. This guarantees that sudo never lowers the umask when running
a command. Note on systems that use PAM, the default PAM configuration may specify
its own umask which will override the value set in sudoers.
谢谢!