web-dev-qa-db-ja.com

/ var / runにPIDファイルを書き込む権限

Ubuntu

touch: `/var/run/test.pid 'にタッチできません:権限が拒否されました

Start-stop-daemonを開始し、PIDファイルを/ var/runに書き込みたいstart-stop-daemonはmy-program-userとして実行されます

/ var/run設定はdrwxr-xr-x 9ルートルートです

My-program-userをルートグループに入れないようにします。

53
s5804

デフォルトでは、/ var/runに書き込むことができるのは、実効ユーザーIDが0のユーザー(つまり、root)だけです。これは正当な理由によるので、何をしても、/ var/runのアクセス許可を変更しないでください...代わりに、ルートとしてディレクトリを作成しますnder/var/run:

# mkdir /var/run/mydaemon

次に、その所有権を、プロセスを実行するユーザー/グループに変更します。

# chown myuser:myuser /var/run/mydaemon

ここで、/ var/runではなく/ var/run/mydaemonを使用するように指定します。

問題のユーザーとしてテストを実行することで、いつでもこれをテストできます。

74
mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon

次の再起動時に失われるため、これは機能しません(/var/runはUbuntuのtmpfsです)。

実行可能な唯一の解決策は、起動スクリプトの一部としてmkdirとchmodを実行することです。

13

これを試すことができます。/var/run/test /ディレクトリーを作成し、このディレクトリーの許可を、プログラムの実行と同じユーザーに変更します。 "chown/var/run/test /"。次に、アプリケーションでPIDファイルの場所を/var/run/test/test.pidに変更します。これでうまくいくはずです。

3
proy

/ var/runで「スティッキー」ビットを使用するのはどうですか?

chmod + t/var/run?

おそらく他のいくつかのアプリを台無しにしていますが、それは別の解決策になるようです。

ただし、ここでは別の/ var/runフォルダーを作成することにします。

2
user68971

/etc/permissionsのエントリは永続的です。そこにエントリを作成して、ディレクトリの所有権と権限を永続的なものにします。

1
user432133