ユーザーの umask を設定する通常の方法は 3 つあります。
<オール>UMASK
を設定 /etc/login.defs
で pam_umask.so
を追加 /etc/pam.d
の PAM 構成に /etc/profile
この点では、システム ユーザーと通常のユーザーに違いはありません。
しかし、カスタム umask でデーモンを起動しようとしていると思いますか?
問題は、上記のすべてのオプションがユーザーのログイン時に発生することです。デーモンを実行している場合、デーモンはログインしません。デーモンは init によって開始され、root として実行されるか、setuid
を呼び出します。 指定したシステム ユーザーとして実行します。
主なオプションは次のとおりです:
<オール>umask
init スクリプトで (grep umask /etc/init.d/*
を実行します) 例)start-stop-daemon
を使用する場合 、umask オプションを渡しますシステム ユーザーは、パスワードの有効期限、ホーム ディレクトリ (システム ユーザーにはホーム ディレクトリがありません)、および UID (通常、システム ユーザーは任意のしきい値を下回っています) の 3 つの点で「通常の」ユーザーとは異なります。
一般的なケースでは、ほとんど完全に運が悪いです。 PAM を使用して umask を設定できますが、PAM はこれら 3 つの違い以外に基づいて動作を選択します。
つまり、PAM で「システム」ユーザーと「非システム」ユーザーを区別することはできません。これには 2 つのオプションがあります:
-
PAM を使用して全員の umask を設定するか (例:
/etc/login.defs
でチェックイン) )、次に/etc/bash.bashrc
で非システム ユーザーの umask を明示的に設定します。 (または類似); -
または、これを行うために独自の PAM モジュールを作成します。 umask の設定は一般的な要求であるため、これは多くの人に歓迎されると思います。
この答えは、塩を少々加えて受け取ってください。この種の要求は非常に一般的であり、より良い/適切な方法が現在存在していても驚かない.