システムユーザーに対してumaskを設定する方法は?

システムユーザーに対してumaskを設定する方法は?

umaskシステムユーザー(次を使用して作成)に設定できますかuseradd --system username

答え1

ユーザーのumaskを設定する3つの一般的な方法があります。

  1. 設定UMASKする/etc/login.defs
  2. pam_umask.soPAM構成に追加/etc/pam.d
  3. シェル起動ファイルに設定します。/etc/profile

この点では、システムユーザと一般ユーザとの間に差はない。

しかし、カスタムumaskを使ってデーモンを起動したいと思いますか?

問題は、ユーザーがログインすると上記のすべてのオプションが発生することです。デーモンを実行している場合はログインしません。 initによって起動された後、rootまたはsetuid指定されたシステムユーザーとして実行されます。

主なオプションは次のとおりです。

  1. umask初期化スクリプトを挿入します(grep umask /etc/init.d/*例:a実行)
  2. プログラムを起動するためにカスタムumaskを使用するようにinitを設定します(システムランチャー 新生ウマスク)
  3. 使用するとstart-stop-daemon合格マスクオプション
  4. 呼び出すようにプログラム自体を変更します。マスク関数またはシステムコール

答え2

システムユーザーは、パスワードの有効期限、ホームディレクトリ(システムユーザーにホームディレクトリがない)、およびUID(システムユーザーは通常任意のしきい値未満)の3つの点で「一般」ユーザーとは異なります。

通常、あなたはほとんど完全に幸運ではありません。 PAMを使用してumaskを設定できますが、PAMはこれら3つの違い以外の要素に基づいて動作を選択します。

つまり、PAMに「システム」ユーザーと「非システム」ユーザーを区別するように指示することはできません。これにより、次の2つのオプションが提供されます。

  • PAMを使用してすべての人にumaskを設定し、(チェックインなど)、システム以外のユーザー(または同様のユーザー)/etc/login.defsに対してumaskを明示的に設定します。/etc/bash.bashrc

  • または、これを行うために独自のPAMモジュールを作成します。 umaskの設定は一般的なリクエストなので、これは多くの人に人気があると思います。

この答えを塩の卵として受け入れます。この種の要求は非常に一般的であり、現在より良い/正しい方法が存在しても驚くことはありません。

答え3

@Mikelが提案したように、デーモンとして機能するシステムアカウントを設定したい場合は、デーモン自体を設定してみてください。

MacOSで_wwwアカウントのumaskを設定する方法を見つけようとして、この質問を見つけました。上記の答えからわかるように、これは難しいですが、Apacheサービスを(この場合)user ==デーモンとして設定することで問題を解決できることがわかりました。

奇妙なことに、次の助けを借りて起動スクリプト(通常は/etc/init.d/にありますが、MacではLibrary/LaunchDaemons/にあります)が見つかりません。http://krypted.com/mac-security/apache2-umasks/Apacheに固有の特定の環境スクリプトがあることがわかりました。

$ sudo vim /usr/sbin/envvars
    umask 002

他のデーモンにも同様の方法があり、これは特定の状況で役に立ちます。

関連情報