mp3*_*ley 8 ubuntu daemon umask yaws
我有一个 http 守护进程服务器进程 (yaws),我希望服务器使用 002 的 umask 写入任何新文件,以便同一组中的另一个用户可以修改、移动或删除由守护进程创建的文件。这是在 Ubuntu 10.04 上。
与Apache不同,yaws没有umask的配置选项,那么有什么方法可以设置任何守护进程的umask呢?
我找到了关于将 init 脚本更改为 add 的答案umask 002。这确实有效,但我不确定编辑 init 脚本是在多台机器上轻松记录和配置的最佳方式。
我还发现参考pam_umask模块这里。看起来这允许在 /etc/passwd 的 GECOS 字段中配置 umask 的每个用户设置。
还有其他方法可以为守护进程设置 umask 吗?推荐的方式是什么?
在 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
Run Code Online (Sandbox Code Playgroud)
然后可以通过运行以下命令更改每个用户的设置:
sudo chfn -o "umask=002" daemon_username
Run Code Online (Sandbox Code Playgroud)
将 umask 设置添加到 /etc/passwd 中的 GECOS 字段。
这仅适用于非交互式、非登录 shell,例如在引导时运行守护程序启动脚本时。
对于登录 shell,需要从其他 shell 配置文件(例如 /etc/profile、/etc/login.defs 或用户主目录 .profile、.bashrc 等)中删除 umask 设置。否则 pam_umask 设置将被覆盖。有关配置顺序,请参阅 pam_umask 手册页。
.profile在守护进程的主目录中创建一个文件:
#!/bin/sh
umask 002
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下命令找到守护程序的主目录:
getent passwd daemon | awk -F':' '{ print $6; }'
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,我能想到的唯一其他解决方案就是编辑脚本/etc/init.d。
| 归档时间: |
|
| 查看次数: |
16908 次 |
| 最近记录: |