同じグループの別のユーザーがデーモンプロセスによって作成されたファイルを変更、移動、または削除できるように、サーバーに002のumaskを使用して新しいファイルを書き込ませるHTTPデーモンサーバープロセス(yaws)があります。これはUbuntu 10.04にあります。
Apacheとは異なり、yawsにはumaskの構成オプションがないため、デーモンプロセスのumaskを設定する方法は何ですか?
私は この答え を追加するように初期化スクリプトを変更することについて見つけましたumask 002
。これはうまくいきましたが、initスクリプトを編集することが、これを複数のマシンで簡単に文書化および構成するための最良の方法かどうかはわかりません。
また、pam_umaskモジュールへの参照 here も見つかりました。これは、ユーザーごとにumaskの設定を/ etc/passwdのGECOSフィールドで構成できるように見えます。
デーモンプロセスのumaskを設定する他の方法はありますか?そして、推奨される方法は何でしょうか?
デーモンのホームディレクトリに.profile
ファイルを作成します。
#!/bin/sh
umask 002
次のコマンドを実行すると、デーモンのホームディレクトリを見つけることができます。
getent passwd daemon | awk -F':' '{ print $6; }'
それがうまくいかない場合は、/etc/init.d
スクリプトを編集することしか考えられません。
Ubuntu 10.04では、グローバルなデフォルトのumask設定をpam_umaskモジュールで制御できます。
一般にDebianに関連するこのブログでいくつかの詳細が見つかりました: http://muzso.hu/2008/01/22/default-permissions-with-libpam-umask
Pam_umaskモジュールは、Ubuntu 10.04にデフォルトでインストールされますが、構成する必要があります。
/etc/pam.d/common-sessionを編集して、次の行を追加します。
session optional pam_umask.so umask=022
次に、次のコマンドを実行して、ユーザーごとの設定を変更できます。
Sudo chfn -o "umask=002" daemon_username
/ etc/passwdのGECOSフィールドにumask設定を追加します。
これは、起動時にデーモン起動スクリプトが実行される場合など、非対話型で非ログインシェルに対してのみ機能します。
ログインシェルの場合、umask設定を/etc/profile、/etc/login.defs、またはユーザーのホームディレクトリ.profile、.bashrcなどの他のシェル構成ファイルから削除する必要があります。それ以外の場合、pam_umask設定は上書きされます。設定の順序については、pam_umaskのマニュアルページを参照してください。
サービスがツール「start-stop-daemon」を介して開始される場合、umaskはパラメーター「--umask」を使用してコマンドラインレベルで指定できます。例:
log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion --umask 002 ; then
log_end_msg 0
else
log_end_msg 1
RET=1
fi
構成ファイルからそのような詳細を読み取るように開始スクリプトを調整することは、ユーザーベースの設定を追加するよりも透過的である可能性があります。もちろん、これはデーモンに使用される起動手順によって異なります。
詳細はman-Pageから取得できます:man start-stop-daemon