root以外のユーザーとしてサービスを実行するための推奨方法は何ですか?

root以外のユーザーとしてサービスを実行するための推奨方法は何ですか?

プロセスを開始および停止する単純なinit.dスクリプトがあります。私はinit.dルートを呼び出しますが、それが制御するプロセスが特定のユーザーとして実行されることを望みます。

オンラインで最も一般的なアドバイスは次のとおりです。

su myuser -c "my_process args"

しかし、これは2番目のプロセススペース、新しいシェルなどを作成し、ややエレガントではありません。

私はシェルを置き換えるので使用することを好みますexec()が、ユーザーを引数として要求しません。このsetuid()場合、最初に使用する必要がありますか? GIDの設定はどうですか?注意が必要な問題がありますか?

または、init.dを他のユーザーとして実行するディストリビューションソリューションはありますか?私の環境はCentos 6.4です。

ベストアンサー1

ディストリビューションによって異なりますが、RHELベースのディストリビューションは派生したBash関数を使用し/etc/rc.d/init.d/functionsますdaemonrunuserソースファイルからわかるように、suPAMを介さず(おそらく場合によっては鶏肉と卵の問題を避けるため)、ほとんどの場合と機能的に同じです。

これは実際にあなたの異議に対する答えではありませんが、これはサービスの役割です。あなたが望むきれいさと全体的な論理的一貫性は、次のことに対する動機の一部です。systemd

おすすめ記事