当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

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

我发现this answer关于更改初始化脚本以添加umask 002。这确实有效,但是我不确定编辑init脚本是否是使此文档易于记录和在多台计算机上配置的最佳方法。

我还找到了对pam_umask模块here的引用。看起来这允许在/etc /passwd的GECOS字段中配置每个用户的umask设置。

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

最佳方案

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

#!/bin/sh
umask 002

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

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

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

次佳方案

在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设置。

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9087.html,未经允许,请勿转载。