如何為系統使用者設定umask?

如何為系統使用者設定umask?

umask是否可以為系統使用者(使用 建立)設定useradd --system username

答案1

設定使用者 umask 的常用方法有三種。

  1. 設定UMASK/etc/login.defs
  2. 新增pam_umask.so到您的 PAM 配置中/etc/pam.d
  3. 在shell啟動檔案中設定它,例如/etc/profile

在這方面,系統使用者和普通使用者沒有區別。

但我假設您正在嘗試使用自訂 umask 啟動守護程序?

問題是:當使用者登入時,上述所有選項都會發生setuid

您的主要選擇是:

  1. 放入umask您的初始化腳本(grep umask /etc/init.d/*例如執行 a )
  2. 配置 init 以使用自訂 umask 啟動程式(系統執行程式 新貴umask
  3. 如果使用start-stop-daemon,則傳遞遮罩選項
  4. 修改程式本身來調用遮罩函數或系統調用

答案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

其他守護程序可能也有類似的方法,這在特定情況下可能會有所幫助。

相關內容