Ubuntu

在 Ubuntu 上為守護程序設置 umask 的方法

  • November 6, 2015

我有一個 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 手冊頁。

引用自:https://serverfault.com/questions/166176