umask
是否可以為系統使用者(使用 建立)設定useradd --system username
?
答案1
設定使用者 umask 的常用方法有三種。
- 設定
UMASK
於/etc/login.defs
- 新增
pam_umask.so
到您的 PAM 配置中/etc/pam.d
- 在shell啟動檔案中設定它,例如
/etc/profile
在這方面,系統使用者和普通使用者沒有區別。
但我假設您正在嘗試使用自訂 umask 啟動守護程序?
問題是:當使用者登入時,上述所有選項都會發生setuid
。
您的主要選擇是:
答案2
系統使用者在三個方面與「普通」使用者不同:密碼過期、主目錄(系統使用者沒有主目錄)和 UID(系統使用者通常低於某個任意閾值)。
在一般情況下,你幾乎完全不走運。您可以使用 PAM 來設定 umask,但 PAM 根據這三個差異之外的其他因素來選擇行為。
換句話說,您無法讓 PAM 區分「系統」使用者和「非系統」使用者。這給您留下了兩個選擇:
要麼使用 PAM 為每個人設定 umask(例如 check in
/etc/login.defs
),然後為非系統使用者明確設定 umask/etc/bash.bashrc
(或類似);或者您編寫自己的 PAM 模組來執行此操作。我認為這會受到很多人的歡迎,因為設定 umask 是一個常見的請求。
請對這個答案持保留態度。這種請求很常見,如果現在有更好/正確的方法,我不會感到驚訝。
答案3
正如@Mikel建議的那樣,如果您嘗試配置作為守護程序的系統帳戶,請嘗試配置守護程序本身。
我遇到這個問題是想了解如何在 MacOS 上為 _www 帳戶設定 umask。雖然正如上面的答案所暗示的那樣,這很困難,但我發現可以透過將 apache 服務配置為(在本例中)使用者 == 守護程式來解決它。
奇怪的是,我找不到啟動腳本(通常在 /etc/init.d/ 中,但在 Mac 上的 Library/LaunchDaemons/ 中),但在以下人員的幫助下:http://krypted.com/mac-security/apache2-umasks/發現apache有自己特定的環境腳本。
$ sudo vim /usr/sbin/envvars
umask 002
其他守護程序可能也有類似的方法,這在特定情況下可能會有所幫助。