• ベストアンサー

権限の違うシェルスクリプトの実行

3つのシェルスクリプトがあります。 ●root権限で実行  aaa.csh ●ユーザ指定権限で実行 bbb.csh ●root権限で実行 ccc.csh この3つのシェルスクリプトはaaa.csh →bbb.csh →ccc.cshの順番でバッチ処理として cronに設定したいのですが、 権限が違うのでroot権限のcrontabとユーザ指定のcrontabに それぞれ設定しなくてはいけません。 あまりスマートではないかと思い、 何かよい方法はないかと質問させて頂きました。 3つのシェルスクリプト1つシェルスクリプトにまとめてroot権限のcrontabに設定してしまう方法とかどうでしょうか? ちなみにスクリプトの処理の内容は単純なファイルコピーなどです。 意味分かりますでしょうか? よろしくお願いします。

  • rariko
  • お礼率28% (223/790)

質問者が選んだベストアンサー

  • ベストアンサー
  • SSBBGLUV
  • ベストアンサー率47% (11/23)
回答No.3

root権限からのsuであれば、恐らくパスワードは聞かれずにすむと思います。 suの部分を以下のように書いてみてください。 su - username -c ".../bbb.csh" ※usernameと.../は適宜置き換えてください。

その他の回答 (3)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

sudoを使用してみたらどうでしょうか? ○@IT:止められないUNIXサーバのセキュリティ対策  第5回 サービスをセキュアにするための利用制限(3)  ~管理者権限の制限のためのsuとsudoの基本~  http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html ○@IT:止められないUNIXサーバのセキュリティ対策  第6回 特権ユーザーの安全性向上を行うsudoの設定例  http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec06/unix_sec01.html

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html
  • SSBBGLUV
  • ベストアンサー率47% (11/23)
回答No.2

三つを順に実行するスクリプトを組んで、そのスクリプト内で suを使ってbbb.shを別ユーザとして実行するというのはどうでしょうか?

rariko
質問者

補足

回答ありがとうございます。 はい、その方法も考えたのですが、スクリプト内に suコマンドを記述すると対話形式になってしまいパスワードを途中で入力しなくてはいけません。 (パスワードを入力しなくてもよいスクリプトの方法があるらしいのですが・・・)

  • denbee
  • ベストアンサー率28% (192/671)
回答No.1

>3つのシェルスクリプト1つシェルスクリプトにまとめてroot権限のcrontabに設定してしまう方法とかどうでしょうか? もし、bbb.schにユーザ権限が設定されていることに意味があるなら、 まとめてroot権限を与えるのはセキュリティ的に問題ではないでしょうか?

関連するQ&A

  • シェルスクリプトについて

    シェルスクリプトについて Linuxで先頭にスペースが入っている行をひとつ上の行につなげたいと考えています。 その場合、シェルスクリプトはどのように書けばよいかご教示願います。 【ファイル内容】 aaa △bbb ccc ddd (b行の先頭のみスペース(△)が入っています。) 【変換後のファイル】 aaa bbb ccc ddd

  • シェルの引数を、実行するパラメータに指定するには?

    シェル初心者です。 シェルの実行パラメータを、その中で実行する処理のパラメータに再び指定したいのですが可能でしょうか。 ただし、パラメータの数は可変です。 環境はSolarisです。 aaa.sh aaa bbb ccc aaa.shの中 bbbコマンド aaa bbb ccc ということを行いたいです。 パラメータ数が固定であれば問題なさそうですが 可変の場合、どのような記述をすればよいでしょうか?

  • シェルスクリプトの切り替え?

    シェルには種類がありユーザーはそれを切り替えることによって好みのシェルを自由に選択することが出来る。 というのはわかりました。 が、シェルスクリプトを記述して実行する場合はどうなんでしょう。 bornシェルで記述したシェルスクリプトをcshから実行できるのでしょうか。 実行者とスクリプト記述者が同じシェル環境で操作しないといけないのかと思い質問しています。 ひょっとして意味のわからない質問かも知れませんがお願いします。

  • csh スクリプトの実行者を知りたい

    スクリプト内部で、そのスクリプトを実行しているのが、 ユーザーなのか、cronなのかを判定することは可能でしょうか? 具体的には、hoge.cshというスクリプトがあり、 これはユーザーmogeのcronで週一回実行するよう登録されています。 さらに、このスクリプトは、メンテナンス時などに、 ユーザーmogeがコマンドラインからも実行することがあります。 スクリプト内部で、cronから走った時と、コマンドラインから 走らせた時で異なるlogを吐かせたいのですが、 どのようにしたらよいでしょうか。 宜しくお願いします。

  • シェルスクリプトでPHPを実行したい

    シェルスクリプトでPHPを実行したいのですが、うまくできません。 centos5でcrontabに 20 0 * * * /bin/sh /var/www/html/test/test.sh と登録しています。 cronのlogをみたところ Dec 12 00:20:01 localhost crond[19060]: (root) CMD (/bin/sh /var/www/html/test/test.sh) と記録されていてここまでは問題ないように思えます。 test.shの中身は #!/bin/sh cd /var/www/html/test/ php -f daily.php > result exit になっています。 daily.phpが実行されないので、daily.phpに何かおかしなところがあるのかと思い daily.phpを直接ブラウザから起動してみたところ問題なく処理されました。 このような経緯でtest.shの中身が間違っていると思っているのですがどこが間違っているのか分かりません。 どなたかアドバイス頂けると助かります。

  • シェルスクリプトで一時的にルート権限として実行

    Linuxのシェルスクリプトでそのスクリプトファイルを実行したユーザーにかかわらずそのスクリプト内のコマンドがルート権限として実行されるようにしたいのですが良い方法はありますか? ルートのパスワードを入力せずに一時的にルート権限を使用できるようにしたいのです。 やりたいことは screenでルートユーザでしかアタッチできないプロセスに一時的にアタッチしてコマンドを実行してデタッチするということなのですが… screenにはマルチユーザー機能が在るようで、それはscreenでルートがアタッチしてる場合のみですよね? 間違っていたらすみません。 OSはCentOS 6.2です。 必要な情報があれば補足で追加致します。 宜しくお願いします。

  • シェルスクリプトについて

    シェルスクリプトを勉強しています。 hoge.txt内で"AAA"という文字列を"BBB"という文字列を検索し下記のような処理を行いたいです。  (1)AAA・BBBともにある場合  →スクリプトを続行  (2)AAA・BBBともにない場合  →スクリプトを停止  (3)AAAしかない場合  →BBBがありませんというメッセージを流す    (4)BBBしかない場合  →AAAなしでスクリプトを続行しますというメッセージを流す   シンプルなやり方でいいので上記のようなことを行いたい場合、どのようにスクリプトを書けばいいのか教えてください。 よろしくお願いします。

  • Bシェルにてユーザの実行可否

    シェルにてrootユーザのみ実行が出来るようにしたいと思い、以下のようなシェルを書きました。 が、root以外のユーザでも実行が可能となってしまっています。実行する上でシェル、またはシェル以外で影響はあるのでしょうか?ご存知でしたらご教授願います。 ※今回はユーザID:user1で作成+実行しています。 ※このシェルのアクセス権限は"-rwxr--r--"としています。 #!/bin/sh UID=`whoami` if [ $UID -ne root ] then echo "実行はrootのみ" fi -以降、その他の処理が続く-

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

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

  • シェルスクリプトの書き方

    すみません、シェル初心者なのですが、急を用してまして質問させて頂きました。 シェルスクリプトで コマンドを実行する前に他のユーザにスイッチしてから 実行するというのを実現したいのですが・・・ #!/bin/csh コマンド1 コマンド2 ・・・ とコマンド1の前に su コマンドを実行させたいのですが、 パスワードを入力する際、対話式なので どう書いてよいか分かりません。 よろしくお願いします。