umask
システムユーザー(次を使用して作成)に設定できますかuseradd --system username
?
答え1
ユーザーのumaskを設定する3つの一般的な方法があります。
- 設定
UMASK
する/etc/login.defs
pam_umask.so
PAM構成に追加/etc/pam.d
- シェル起動ファイルに設定します。
/etc/profile
この点では、システムユーザと一般ユーザとの間に差はない。
しかし、カスタムumaskを使ってデーモンを起動したいと思いますか?
問題は、ユーザーがログインすると上記のすべてのオプションが発生することです。デーモンを実行している場合はログインしません。 initによって起動された後、rootまたはsetuid
指定されたシステムユーザーとして実行されます。
主なオプションは次のとおりです。
答え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
他のデーモンにも同様の方法があり、これは特定の状況で役に立ちます。