• ベストアンサー

sudoでシェルスクリプトを実行させたい

moco0220の回答

  • moco0220
  • ベストアンサー率38% (22/57)
回答No.1

商用UNIXサポートの仕事をしていますので、LINUXはあまり得意ではないのですが、 /etc/sudoersは正しく設定されていますか? 次のように記述すれば、動くと思いますが... apache ALL = (root) NOPASSWD:/フルパス/xxx.sh いずれにしても該当するsudoersを示されたほうが、 他の方もアドバイスしやすいかと思います。

ZeroWorld
質問者

お礼

早速のご回答とご指摘ありがとうございます。/etc/sudoersは設定用のvisudoコマンドか何かが使えませんでしたのでviで以下の様に編集しました。 apache ALL = NOPASSWD:/usr/local/apache2/htdocs/root/xx/xxx.sh あとこれも関係あるかどうかよくわからないのですが、ログインシェルは/bin/falseになってます。 apache:x:nnn:nnn::/var/apache:/bin/false 他にも お気づきの点があればご指導の程お願いいたします。

関連するQ&A

  • sudoでのシェルスクリプト実行

    ユーザに、sudoで実行してもらいたいシェルスクリプトがあります。 sudoで実行しなかった場合、「sudoで実行してください」 というような警告文を表示し、処理を実行せずに終了し、 sudoで実行した場合のみ、処理を行ないたいです。 こうした動作を実現するには、シェルスクリプトに どういった記述を追記すればいいでしょうか? 環境はMacOSXです。よろしくお願いします。

  • apacheでphp、exec、system関数でのsudo実行

    FreeBSD 7.0-STABLE でphpスクリプトを作っています。 apacheは2.0.63、phpはphp-4.4.9です。 apacheの設定 ユーザ、グループは、apache phpは safe_mode = offです。 sudoは apache ALL=(ALL) ALL と設定しています。 apacheを手動で起動 /usr/local/apache2/bin/apachectl start して、下記を実行すると <?PHP $cmd = "echo 'password' | sudo -S ls /root"; exec($cmd, $output); print_r($output); ?> 結果、 Array ( [0] => .cshrc [1] => .history [2] => .k5login [3] => .login [4] => .profile [5] => .ssh ) とうまく実行できるのですが apacheを自動起動した場合、 以下の方法をそれぞれ試しましたが # cp /usr/local/apache2/bin/apachectl /usr/local/etc/rc.d/apache.sh # chmod 0755 /usr/local/etc/rc.d/apache.sh より起動 /etc/rc.local # Start Apache /usr/local/apache2/bin/apachectl start より起動 crontab -e @reboot /usr/local/apache2/bin/apachectl start より起動 いずれも 結果は Array ( ) とうまくいきません。 どなたか原因のわかる方、教えていただけないでしょうか? 宜しくお願いいたします。

  • Linuxでシェルスクリプトがフルパスだと実行できない

    Linuxでシェルスクリプトがフルパスだと実行できない こんにちは 現在linuxでシェルスクリプトを記載していて、やっと出来た!と思ったら、なぜかフルパスで実行すると失敗します。 中身は例えば #!bin/sh echo "hello" とし、ファイル名をtest.shとします。 実行時にカレントからだと上手くいきます。 ./test.sh ただし、フルパスで実行するとうまくいきません。 ./home/user/test.sh エラーは以下 bash: ./home/dv3/tet.sh:No such file or directory 所有者はrootでグループもrootにしてあります。 シェルの権限は755にして、rootで実行しています。 なぜカレントだと上手くいき、フルパスだと上手くいかないのでしょうか? パスが必要なコマンドも入っていないのに。。。 どなたかご教授いただけると幸いです。 宜しくお願い致します。

  • シェルスクリプトファイルからjavaを実行したい

    シェルスクリプトファイル(拡張子が.shのファイル)からJavaを実行したいのですが上手くいきません。 コマンドラインで直接 cd javaのファイルが置いてあるディレクトリへのフルパス を実行した後 java 実行するクラス名 引数 とすると上手く動きます。 上記2行をshファイルにコピペしてみましたが、エラーになり動きません。 エラーは : No such file or directory cdをしている行とcdで移動しようとしているディレクトリパス Exception in thread "main" java.lang.NoClassDefFoundError: 実行するクラス shファイルの1行目に #!/bin/sh や #!/bin/bash を入れてみましたが、どちらも挙動が変わりません。(エラーのまま) shファイルはUTF-8を文字コードにして改行はLFのみです。 また、javaコマンドを実行するとき -cp や -classpath 引数でjavaのファイルが有るディレクトリを指定してみましたが挙動が変わりません。 shの実行はコマンドラインから sh shファイル(絶対パスで) source shファイル(絶対パスで) でやってみましたが駄目でした。 javaのファイルが有るディレクトリに対してパスを貼ってみましたが挙動が変わりません。 コマンドラインからコピペしてshファイルを作っていますので、フォルダ名等のつづりミスの可能性は低いと思います。 何か設定が足りないのでしょうか? よろしくお願いいたします。

  • Cシェルについて

    Cシェルについて #! /bin/csh ##! /bin/csh -vx setenv NOHUP '/usr/bin/nohup' set AAA_CSH = $NOHUP' XXX.sh file.txt &' ($AAA_CSH >> /dev/null) >>& err.log シェルスクリプトを作成して上記のとおりnohupでXXX.shを実行するように記述します。 エラーがあった場合、err.logに出力するように作成したつもりなのですが、 XXX.shがなかったとき、 「/usr/bin/nohup: XXX.sh:そのようなファイルまたはディレクトリはありません。」 と標準出力されてしまいます。 このエラーメッセージをerr.logに記述するようにしたいのですが、 どうしたらよいでしょうか? よろしくお願いいたします。

  • シェルスクリプト初心者です、以下のシェルを見てくだ

    お世話になります。 CentOS5にて、ディレクトリ「/home/user」からリモートホスト「192.168.11.200」の「/home/user」へ sshの鍵方式を使い、SCPで画像のコピーを行うシェルスクリプトを書きました。 以下のシェルスクリプトを書いたのですが、3行目の「/usr/bin/scp」が引っかかって 「/home/user/move_img.sh: line 3: `/usr/bin/scp -P 22 -i "/home/user/.ssh/id_rsa" -r ${FILE} user@192.168.11.200:${FILE};'」 とのエラーが出てしまいます。 素人のくせにシェルなんて書くなと言われればそれまでですが、 一体どの記述が悪いのか見当がつきません。 ご教授をお願いいたします。 ------ #!/bin/sh for FILE in `find /home/user -regex ".*\.\(jpg\|png\|gif\|JPG\|GIF\|PNG\)"`; /usr/bin/scp -P 22 -i "/home/user/.ssh/id_rsa" -r ${FILE} user@192.168.11.200:${FILE}; done ------

  • シェルスクリプト実行で”そのようなファイルやディレクトリはありません”と出ます。

    以下の単純なシェルスクリプトを実行しようとしています。 ------------------- #!/bin/sh echo ok ------------------- そのとき、 bad interpreter: そのようなファイルやディレクトリはありません と出てしまいます。 ・which sh で確認すると /bin/sh です。 ・Windowsで作ったファイルをFTPのアスキーモードで転送しています。 (ものすごく単純なミスをしてるのかもしれませんが、) よろしくお願いします。

  • シェルで.bashrcが読めません。

    FreeBSD4.5で、 /home/me/の下に以下のシェルをファイル名1で作成し実行してもsuまでしか動きません。 パスもあっているのですが、原因は何が考えられますか? #!/bin/sh /usr/local/bin/sudo su www /usr/local/bin/bash source /home/me/.bashrc

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

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

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