1. ホーム
  2. linux

[解決済み] Linuxサービスを別のユーザーとして実行するためのベストプラクティス

2022-05-17 04:33:34

質問

サービスのデフォルトの起動方法は root で起動します。私の記憶が正しければ、他の Linux ディストリビューションでも同じで、 init スクリプトを /etc/init.d .

代わりに私が選んだ(静的な)ユーザーとしてプロセスを実行させるための最良の方法は何だと思いますか?

私がたどり着いた唯一の方法は、次のようなものを使用することでした。

 su my_user -c 'daemon my_cmd &>/dev/null &'

しかし、これではちょっと片付かないような...。

他の非 root ユーザーとしてサービスを自動的に開始する簡単なメカニズムを提供する、ちょっとしたマジックが隠されているのでしょうか?

EDITです。 今回起動する処理は、PythonスクリプトかJavaプログラムであると言うべきでした。私はそれらの周りのネイティブラッパーを書きたくないので、残念ながら、私は setuid() として を示唆しています。

どのように解決するのですか?

Debianでは start-stop-daemon ユーティリティを使用しています。これは pid ファイルを処理したり、ユーザを変更したり、 デーモンをバックグラウンドにしたり、その他いろいろなことを行います。

私は RedHat には詳しくないのですが、このユーティリティは daemon ユーティリティはすでに使っているもので、(これは /etc/init.d/functions で定義されています) は、あらゆるところで次のものと同等であると言及されています。 start-stop-daemon と同じであるため、プログラムの uid を変更することができるか、またはその方法がすでに正しいものであるかのどちらかです。

ネットを見渡せば、使える既成のラッパーがいくつかあります。いくつかはすでに RedHat にパッケージされているかもしれません。以下のサイトを見てください。 daemonize を見てください。