権限の低いユーザーとしてupstartを使用してbashスクリプトを実行する

権限の低いユーザーとしてupstartを使用してbashスクリプトを実行する

/home/jack/myscript.sh私が実行したいスクリプトは次のとおりです。

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26/
/home/jack/myapp/apache-tomcat-6.0.32/bin/./catalina.sh run

/etc/init/myapp.conf私が書いた新文書:

  description "Myapp Server"
  start on runlevel [2345]
  stop on runlevel [06]
  respawn
  respawn limit 10 5
  exec `su jack -c /home/jack/myscript.sh`

もしそうなら、ユーザーとしてスクリプトを実行したい場合、jack上記の設定はうまくいきますか?もっと良い方法がありますか?

ベストアンサー1

~によるとヌボリッチレシピ、さまざまなユーザーでサービスを実行する組み込み機能が計画されていますが、まだ実装されていません。

利用可能な場合はstart-stop-daemon使用してください。

exec start-stop-daemon --start -u jack --exec /home/jack/myscript.sh

そうでない場合は、(エラーが発生しない限り)常に指定されたユーザーに切り替えて、独自のポリシー(特にほとんどのシステムではPAMポリシー)に準拠するか、またはをsu使用してくださいsudostart-stop-daemonsusudo

あなたの場合は中間スクリプトは必要ありません。 Upstart サービス定義で直接環境変数を設定できます。

description "Myapp Server"
  start on runlevel [2345]
  stop on runlevel [06]
  respawn
  respawn limit 10 5
  env JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26/
  exec /home/jack/myapp/apache-tomcat-6.0.32/bin/catalina.sh run

おすすめ記事