• 締切済み

シェルスクリプトでユーザ指定

メールサーバにメールが届くと、固定の指定ユーザで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のパスワードが必要なんですか?

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

suは対話的に実行されることが前提のコマンドなので、シェルスクリプトの次の行にパスワードを書いても駄目です。suにパスワードを与えるためには、expectという対話プログラムをバッチ的に実行するコマンドを使う必要があります。 自分以外の特定ユーザーでコマンドを実行したい場合、普通はsudoコマンドを使います。事前に設定が必要ですが。 詳しくは検索してみてください。

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

>シェルスクリプトにu02のパスワードが必要なんですか? su を使うならそうですね。 aliasファイルに、 ml: "|/path/mlexe.sh" のように書いていると思いますが、これを ml: :include:/path/mlexe のようにして、/path/mlexe のオーナーをu02にしてその内容を、 |"/usr/bin/php /usr/local/apache/phtml/msv/mls.php" とすれば、u02権限で実行されます。

kinuasa
質問者

補足

ありがとうございます。パスワードは #!/bin/sh su u02 -c "/usr/bin/php /usr/local/apache/phtml/msv/mls.php" pwxxxxxx exit このように書けばよいのでしょうか? 教えてもらったaliasの方法ではやりたいことができました。includeの意味など分かりませんが、 ml: "|/path/mlexe.sh" のように書いてあったので、教えてもらった通りにやりました。

関連するQ&A

専門家に質問してみよう