为所有用户设置 umask

Yar*_*rin 3 linux fedora centos file-permissions umask

我正在尝试将所有用户的默认 umask 设置为 002,包括我的 CentOS 机器上的 root。

根据这个和其他答案,这可以通过编辑/etc/profile. 然而,该文件顶部的评论说:

除非您知道自己在做什么,否则更改此文件不是一个好主意。最好在 /etc/profile.d/ 中创建 custom.sh shell 脚本以对您的环境进行自定义更改,因为这将防止在将来的更新中需要合并。

所以我继续创建以下文件:
/etc/profile.d/myapp.sh
与单行:

umask 002
Run Code Online (Sandbox Code Playgroud)

现在,当我以 root 身份创建一个文件时,该文件天生就有 664 权限,正如我所希望的那样。但是由我的 Apache mod_wsgi 应用程序创建的文件,或使用 sudo 创建的文件,仍然默认为 644 权限......

$ touch newfile(作为根):
结果 = 664(作品)

$ sudo touch newfile
结果 = 644(不起作用)

Apache mod_wsgi 应用程序创建的文件:
结果 = 644(不起作用)

Python 的 RotatingFileHandler 创建的文件:
结果 = 644(不起作用)

为什么会发生这种情况,以及如何确保系统范围内的 664 文件权限,无论创建文件的内容是什么?

Dmi*_*rov 5

profile是shell的启动文件。设置umask 002inprofile.d为从登录 shell 启动进程的所有用户设置它。

你的两个例子性质不同。对于 Apache,您可以在init.d启动 http 服务器的脚本中设置 umask 。

对于以sudo您开始的进程,您可以使用umasksudoers 文件中的选项。