在Ubuntu上为守护进程设置umask的方法


8

我有一个http守护进程服务器进程(偏航),我希望服务器写入umask为002的任何新文件,以便同一组中的另一个用户可以修改,移动或删除该守护进程创建的文件。这是在Ubuntu 10.04上。

与Apache不同,Yaws没有umask的配置选项,那么有什么方法可以设置任何守护进程的umask?

我找到了有关将init脚本更改为add的答案umask 002。这确实可行,但是我不确定编辑init脚本是否是使此文档易于记录和在多台计算机上配置的最佳方法。

我还发现参考pam_umask模块这里。看起来这允许在/ etc / passwd的GECOS字段中配置每个用户的umask设置。

还有其他方法可以为守护进程设置umask吗?推荐的方法是什么?

Answers:


2

.profile在守护程序的主目录中创建一个文件:

#!/bin/sh
umask 002

您可以通过运行以下命令找到守护程序的主目录:

getent passwd daemon | awk -F':' '{ print $6; }'

如果这不起作用,那么我能想到的唯一其他解决方案就是编辑/etc/init.d脚本。


2
getent passwd守护程序| awk -F':'{打印$ 6; }也可以。
Janne Pikkarainen,2010年

1
无需使用sudoread /etc/passwd。或者cat就此而言(grep将接受文件名作为参数,或者仅使用getentJanne指出的方式)。
暂停,直到另行通知。

这在Ubuntu 10.04下不起作用。这可能是因为/ bin / sh链接到/ bin / dash,但是我将守护程序的默认shell更改为/ bin / bash仍然无法正常工作。我认为这是因为$ HOME / .profile不会被非交互性和非登录bash或破折号外壳读取。我找不到任何简单的方法可以从命令行进行演示。交互式外壳umask可以显示为sudo -u daemon bash -c umask。我通过更改设置并重新启动守护程序并查看其创建的文件的权限来测试非交互。
mp3foley,2010年

@ mp3foley:我不熟悉dash,但是umask应该可以使用它。
Zaz

我还询问了守护进程(偏航)邮件列表中的问题。最好的方法是在/etc/init.d/中的守护程序启动脚本中添加umask设置。甚至有人在修补守护程序的源代码。
mp3foley 2010年

5

在Ubuntu 10.04上,可以使用pam_umask模块控制全局默认umask设置。

在这个与Debian有关的博客上,通常可以找到一些细节:http : //muzso.hu/2008/01/22/default-permissions-with-libpam-umask

pam_umask模块默认安装在Ubuntu 10.04上,但需要进行配置。

编辑/etc/pam.d/common-session,添加以下行:

session optional pam_umask.so umask=022

然后可以通过运行以下命令来更改每个用户的设置:

sudo chfn -o "umask=002" daemon_username

在/ etc / passwd中的GECOS字段中添加umask设置。

这仅适用于非交互式,非登录外壳程序,例如在引导时运行守护程序启动脚本时。

对于登录外壳,需要从其他外壳配置文件(例如/etc/profile、/etc/login.defs或用户主目录.profile,.bashrc等)中删除umask设置。否则,pam_umask设置将被覆盖。有关配置顺序,请参见pam_umask手册页。


1

如果通过工具“ start-stop-daemon”启动服务,则可以在命令行级别使用参数“ --umask”指定umask,例如:

log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion --umask 002 ; then
        log_end_msg 0
    else
        log_end_msg 1
        RET=1
    fi

调整开始脚本以从配置文件中读取此类详细信息可能比添加基于用户的设置更为透明-当然,这取决于守护程序使用的启动过程。

可以从手册页中检索更多信息:man start-stop-daemon

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.