質問: シェルスクリプトでユーザ指定 メールサーバにメールが届くと、固定の指定ユーザでphpのファイルを実行するというシステムを作っていて質問があります。 sendmailのaliasesでmlexe.shというシェルスクリプを起動して、シェルスクリプト内で指定したユーザu02でmls.phpを起動させようとして以下のスクリプトを作りました。 #!/bin/sh su u02 -c "/usr/bin/php /usr/local/apache/phtml/msv/mls.php" exit 3行目のexitは必要なんでしょうか?念のために書いているんですが。 これで準備ができたので、aliasesに設定したアドレスにメールを出しました。 すると、エラーが発生したというメールが返ってきました。その内容には ----- transcript of session follows ----- password: sorry と書かれていたので、シェルスクリプトを実行したroot?がu02のパスワードが分からなかったのが原因だと思うのですがそうなんでしょうか? シェルスクリプトにu02のパスワードが必要なんですか?
回答: suは対話的に実行されることが前提のコマンドなので、シェルスクリプトの次の行にパスワードを書いても駄目です。suにパスワードを与えるためには、expectという対話プログラムをバッチ的に実行するコマンドを使う必要があります。 自分以外の特定ユーザーでコマンドを実行したい場合、普通はsudoコマンドを使います。事前に設定が必要ですが。 詳しくは検索してみてください。