スクリプトでユーザーを変更しますか?

スクリプトでユーザーを変更しますか?

起動中に特定のコマンドを実行するようにユーザーを変更しようとしています。自動的に失敗します。コマンドが実行されていないことがわかるので、明らかにユーザー変更は実行されません。

以下のinitscriptで私が何を間違っているのでしょうか?

respawn
console none

start on startup
stop on shutdown

script
  su -u anotheruser -c "myCommand" >> "myLogfile.log"
end script

ベストアンサー1

私はあなたが最新バージョンのUbuntuを実行しているか、突然現れる。エラーを確認できます/var/log/daemon.log

標準はsu構文を採用していますsu [options] [username]。確認してくださいman 1 su。次のことを試すこともできます。

su -c "myCommand" anotheruser >> "myLogfile.log"

さらに、いくつかのことが起こります(ほとんどは望ましくありません)。

  1. myLogfile.logの所有になりますroot
  2. myLogfile.log/同様の絶対パスを使用しないと/tmp/myLogfile.log(upstartランタイムpwdがに設定されているため/)、ルートディレクトリに作成されます。

ファイルを自分で所有させるには、anotheruserコマンドをに切り替えます。

su -c "myCommand >> /tmp/myLogfile.log" anotheruser

myLogfile.log以前の実行で残りの部分があるroot場合、または同様のものに変更がないと、問題が発生する可能性があります(通常、通常のユーザーはルートディレクトリにファイルを作成できません)。myLogfile.log/tmp/myLogfile.log/

おすすめ記事