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をルートグループに入れないようにします。
デフォルトでは、/ 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を使用するように指定します。
問題のユーザーとしてテストを実行することで、いつでもこれをテストできます。
mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon
次の再起動時に失われるため、これは機能しません(/var/run
はUbuntuのtmpfsです)。
実行可能な唯一の解決策は、起動スクリプトの一部としてmkdirとchmodを実行することです。
これを試すことができます。/var/run/test /ディレクトリーを作成し、このディレクトリーの許可を、プログラムの実行と同じユーザーに変更します。 "chown/var/run/test /"。次に、アプリケーションでPIDファイルの場所を/var/run/test/test.pidに変更します。これでうまくいくはずです。
/ var/runで「スティッキー」ビットを使用するのはどうですか?
chmod + t/var/run?
おそらく他のいくつかのアプリを台無しにしていますが、それは別の解決策になるようです。
ただし、ここでは別の/ var/runフォルダーを作成することにします。
/etc/permissions
のエントリは永続的です。そこにエントリを作成して、ディレクトリの所有権と権限を永続的なものにします。