Ubuntu 11.04x64サーバーで、ログインせず、ホームディレクトリを持たないサービスアカウントを実行しています。これらのサービスアカウントは、サービスとして呼び出されるプロセスを実行する責任があります。
これらのサービスが新しいファイルを作成したとき、アクセス許可664(UMASK 002)で作成する必要があります。
これを反映するように/ etc/profileumask設定を編集しました。ユーザーアカウントがこの新しいumask設定を反映するファイルを作成するようになりましたが、アカウントを使用して手動でファイルを作成した場合、サービスアカウントは作成されません(Sudo -u serviceaccount touch newfile)。
助言がありますか?
Upstartまたは/etc/init.dを介してサービスを開始する場合は、適切なinitscriptを編集します。
umask 02
スクリプトの先頭(通常のsh
スクリプト)umask 02
どこでもLinuxには「ログイン」の厳密な定義はなく、アカウントはname/homedir/etcに関連付けることができる(またはできない)UIDにすぎません。
コンソール/ SSH経由でログインすると、ログインプログラム(またはSSHデーモン)はPAMを使用して環境(おそらくpam_umask
)をセットアップし、「ログイン」フラグを使用してシェルを起動します。 /etc/profile
スクリプトは、shおよびbashシェルに属しており、「ログイン」呼び出しに対してのみ読み取ります。
Sudo touch ...
またはSudo /etc/init.d/foo start
を使用する場合、Sudoは認証/アカウント/セッションのセットアップのためにPAMを呼び出しますが、シェルをまったく開始しません。 「profile」または「bashrc」ファイルは無視されます。 (つまり、Sudo -i ...
を使用しない限り。)
Upstartがサービスを実行すると、「プロファイル」スクリプトまたはPAM構成をスキップして、UIDをサービスのUIDに切り替えるだけです。読み取られる唯一の構成は、/etc/init
にあるサービスのファイルです。ここに、umask設定を配置する必要があります。