システムユーザー(useradd --system username
で作成)にumask
を設定することは可能ですか?
ユーザーの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
を使用する場合は maskオプション を渡しますシステムユーザーは、「通常の」ユーザーとは3つの点で異なります。パスワードの有効期限、ホームディレクトリ(システムユーザーにはない)、およびUID(システムユーザーは通常、任意のしきい値を下回ります)。
一般的なケースでは、あなたはほとんど完全に運が悪いです。 PAMを使用してumaskを設定できますが、PAMはこれら3つの違い以外に基づいて動作を選択します。
つまり、PAMで「システム」ユーザーと「非システム」ユーザーを区別することはできません。これには2つのオプションがあります。
PAMを使用して全員のumaskを設定し(たとえば、/etc/login.defs
でチェックイン)、システム以外のユーザーのumaskを/etc/bash.bashrc
(または同様の)で明示的に設定します。
または、これを行うために独自のPAMモジュールを記述します。 umaskの設定は一般的な要求なので、これは多くの人に歓迎されると思います。
この答えは、たっぷりの塩でとってください。この種の要求はかなり一般的であり、今より良い/適切な方法が存在していても、私は驚かないでしょう。
@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
おそらく他のデーモンにも同様の方法があり、特定の場合に役立つ場合があります。