/ var / runにPIDファイルを書き込む許可


51

Ubuntu

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

私はstart-stop-daemonを起動しています。/var/runにPIDファイルを書きたいですstart-stop-daemonはmy-program-userとして実行されます

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

ルートグループにmy-program-userを配置しないようにします。

回答:


71

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

# mkdir /var/run/mydaemon

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

# chown myuser:myuser /var/run/mydaemon

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

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


5
これは私にとってはうまくいきましたが、サーバーを再起動すると、/var/run/mydaemonディレクトリはなくなりました。
myborobudur

17
これは完全な答えではありません。Ubuntuのデフォルトでは/ var / runはtmpfsです。サーバーが起動するたびに、mkdirおよびchownコマンドを再実行する必要があります。
ティム

1
@Tim 答えを編集して完成させてください。
カイザー

デーモンを扱っている場合は、ここで説明するようにsystemdユニットファイルにパス/ var / run / mydaemonを追加することで問題を解決できます。より簡単なハックソリューションは、mkdirおよびchownコマンドをinit.dスクリプト(存在する場合)に追加することです
-odedfos

1
より広範な回答はこちらです:superuser.com/a/1127720/71795非常にエレガントに思える間違った回答はこちらです:stackoverflow.com/a/5174433。要約:/tmpまたはのいずれかを使用します~
ティム

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

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

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


3

これを試すことができます。ディレクトリ/ var / run / test /を作成し、プログラムの実行と同じユーザーにこのディレクトリの権限を変更します。「chown / var / run / test /」これで、アプリケーションでPIDファイルの場所を/var/run/test/test.pidに変更します。これはあなたのために物事が動作するはずです。


2

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

chmod + t / var / run?

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

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


1

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


-6

プログラムユーザーをルートグループに入れないようにするには、他のユーザーに書き込みアクセスを許可します。

# chmod 757

3
/ var / runでchmod 757を実行しないでください!これは重大なセキュリティ上の問題を引き起こす
ミシェル・

1
これはひどい考えです。これは、潜在的に巨大なセキュリティ上の問題が原因となる
トム・オコナー

セキュリティの問題を無視してchmod 757も、次の再起動までしか機能しません。新しい回答の作成については申し訳ありませんが、他のコメントに返信する方法はないようです。
ウラジミールニコリチ

@michel、著者は何をすると述べたことがないchmod/var/run。作成者は、アプリケーションのサブディレクトリを意味している可能性があります。すべての大騒ぎが何であるかわからない。
Acumenus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.