Answers:
设置用户umask的三种普通方法。
UMASK
在/etc/login.defs
pam_umask.so
到您的PAM配置中/etc/pam.d
/etc/profile
在这方面,系统用户和普通用户之间没有区别。
但是我假设您正在尝试使用自定义umask启动守护程序?
问题是:当用户登录时,上述所有选项都会发生。如果您正在运行守护程序,它将永远不会登录。它由init启动,然后以root setuid
用户身份运行,或者以您指定的系统用户身份运行。
您的主要选择是:
umask
您的初始化脚本(以a grep umask /etc/init.d/*
为例)start-stop-daemon
,则传递umask选项系统用户与“普通”用户在以下三个方面有所不同:密码到期,主目录(系统用户没有一个)和UID(系统用户通常低于任意阈值)。
在一般情况下,您几乎完全不走运。您可以使用PAM设置umask,但是PAM会根据这三个差异以外的条件来选择行为。
换句话说,您无法让PAM区分“系统”用户和“非系统”用户。这给您两个选择:
您可以使用PAM为所有人设置umask(例如check in /etc/login.defs
),然后为/etc/bash.bashrc
(或类似的)非系统用户显式设置umask 。
或者您编写自己的PAM模块来执行此操作。我认为这会受到很多人的欢迎,因为设置umask是常见的要求。
请以一小撮盐来回答这个问题。这种请求非常普遍,如果现在有更好/合适的方法,我也不会感到惊讶。
正如@Mikel所建议的那样,如果您尝试配置作为守护程序的系统帐户,请尝试配置守护程序本身。
我来到了这个问题,寻找如何在MacOS上为_www帐户设置umask。尽管这很困难,如上面的答案所示,但我发现我可以通过将apache服务配置为user ==守护程序来解决它。
我奇怪地找不到启动脚本(通常在/etc/init.d/中,但是在Library / LaunchDaemons /中的Mac上),但是在以下网站的帮助下:http ://krypted.com/mac-security/apache2-umasks /发现apache有其自己的特定环境脚本。
$ sudo vim /usr/sbin/envvars
umask 002
可能其他守护程序也有类似的方法,这在特定情况下可能会有所帮助。