回答:
ユーザーのumaskを設定するには、通常3つの方法があります。
UMASK
には/etc/login.defs
pam_umask.so
PAM構成に追加します/etc/pam.d
/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の設定は一般的な要求なので、これは多くの人々に歓迎されると思います。
塩をたっぷり使ってこの答えを受け取ってください。この種の要求は非常に一般的であり、より良い/適切な方法が現在存在していても驚かないでしょう。
pam_umask
が、多分そうではないpam_succeed_if
。ではpam_succeed_if、あなたは他のモジュールのみを与えられたユーザーまたはグループに適用することができます。しかし、私はまだPAMがここで役立つとは思いません。
@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
おそらく他のデーモンにも同様の方法があり、特定の場合に役立つかもしれません。