デーモンプロセスのUbuntuでumaskを設定する方法


8

同じグループの別のユーザーがデーモンプロセスによって作成されたファイルを変更、移動、または削除できるように、サーバーに002のumaskを使用して新しいファイルを書き込ませたいhttpデーモンサーバープロセス(yaws)があります。これはUbuntu 10.04にあります。

Apacheとは異なり、yawsにはumaskの構成オプションがないので、デーモンプロセスのumaskを設定する方法は何ですか?

追加するinitスクリプトを変更することについて、この答えを見つけましたumask 002。これは機能しましたが、複数のマシンでこれを簡単に文書化および構成するための最適な方法は、initスクリプトを編集することかどうかはわかりません。

ここで pam_umaskモジュールへの参照も見つかりまし。これにより、ユーザーごとにumaskの設定を/ etc / passwdのGECOSフィールドで構成できるようになります。

デーモンプロセスのumaskを設定する他の方法はありますか?そして、推奨される方法は何でしょうか?

回答:


2

.profileデーモンのホームディレクトリにファイルを作成します。

#!/bin/sh
umask 002

次のコマンドを実行すると、デーモンのホームディレクトリを見つけることができます。

getent passwd daemon | awk -F':' '{ print $6; }'

それがうまくいかない場合、私が考えることができる他の唯一の解決策は、/etc/init.dスクリプトを編集することです。


2
getent passwdデーモン| awk -F ':' {print $ 6; }も機能します。
Janne Pikkarainen、2010

1
sudoを読むために使用する必要はありません/etc/passwd。またはcatそのことについて(grepファイル名を引数として受け入れるかgetent、Janneが指摘したとおりに使用します)。
追って通知があるまで一時停止。

これはUbuntu 10.04では機能しません。これは、/ bin / shが/ bin / dashにリンクされているためかもしれませんが、デーモンのデフォルトシェルを/ bin / bashに変更しても動作しませんでした。これは、$ HOME / .profileが非インタラクティブで非ログインのbashまたはdashシェルによって読み取られないためだと思います。コマンドラインからこれをデモンストレーションする簡単な方法を見つけることができませんでした。対話型シェルumaskはで表示できますsudo -u daemon bash -c umask。設定を変更してデーモンを再起動し、デーモンが作成するファイルの権限を確認することで、非対話型をテストしました。
mp3foley 2010

@ mp3foley:私はに詳しくありませんがdash、その中umaskで動作するはずです。
Zaz

私はデーモン(yaws)メーリングリストにも質問をしました。最善の方法は、/ etc / init.d /のデーモン起動スクリプトにumask設定を追加することです。誰かがデーモンのソースコードにパッチを当てている。
mp3foley 2010

5

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のマニュアルページを参照してください。


1

サービスがツール「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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.