在 Ubuntu 上為守護程序設置 umask 的方法
我有一個 http 守護程序伺服器程序 (yaws),我想讓伺服器使用 002 的 umask 寫入任何新文件,以便同一組中的另一個使用者可以修改、移動或刪除由守護程序程序創建的文件。這是在 Ubuntu 10.04 上。
和 Apache 不同的是,yaws 沒有 umask 的配置選項,那麼有哪些方法可以設置任何 daemon 程序的 umask?
我找到了關於將初始化腳本更改為 add 的答案
umask 002
。這確實有效,但我不確定編輯 init 腳本是否是在多台機器上輕鬆記錄和配置的最佳方式。我還在這裡找到了對 pam_umask 模組的引用。看起來這允許在 /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
將 umask 設置添加到 /etc/passwd 中的 GECOS 欄位。
這僅適用於非互動式、非登錄 shell,例如在啟動時執行守護程序啟動腳本時。
對於登錄 shell,需要從其他 shell 配置文件(例如 /etc/profile、/etc/login.defs 或使用者主目錄 .profile、.bashrc 等)中刪除 umask 設置。否則,pam_umask 設置將被覆蓋。有關配置順序,請參見 pam_umask 手冊頁。