• ベストアンサー

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

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

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

  • ベストアンサー
回答No.3

No2です。 私も遅くなりました。 状況として許されるならば,最初にroot権でスクリプトを実行し,root権が必要ないスクリプト(コマンド)は 一般ユーザに切り替えて実行すれば良いと思います。 スクリプトが二つあったとしてroot権で実行するのがA.sh 一般ユーザ権で実行するのがB.shとすると まずA.shをroot権で実行します。 で,一般ユーザ権で実行させたい部分(B.sh)をA.shの中で 実行すればよいのですが下記方法で実行して下さい。 -- su - $一般ユーザアカウント -c './B.sh' -- rootから一般ユーザになる分にはパスワードの入力がいらないのでパスワードを渡さず,rootと一般ユーザの権限切替ができると思います。 --部分解説-- su - $一般ユーザアカウント -c './B.sh' su - $一般ユーザアカウント ⇒なりたいアカウントの環境を引き継いでユーザ変更を実施する。 su -c './B.sh' ⇒-cの後に続くコマンドをユーザ変更をして実行する。但し,一回限り。 以上で説明になってますか?

rariko
質問者

お礼

回答ありがとうございます! 教えて頂いたとおりにやったらできました! 勉強になりました。 ありがとうございます。

その他の回答 (2)

回答No.2

方法が幾つかあるのですが,もう少し情報を下さい。 1.シェル実行の際にパスワードを入力する必要があるか? (パスワードを引数として入れるかどうか) #セキュリティ上芳しくない 2.別途回答がありましたが,sudoコマンドが使える環境であるか? 3.実行したいシェルスクリプトは一般ユーザ権限かroot権限か? 以上教えて頂ければと思います。

rariko
質問者

補足

すみません、質問にお答えするのが遅くなりました。 1.シェル実行時にはパラメータは渡しますが、パスワードは渡しません。 2.sudoはスクリプトを実行したい環境では使われていないようなので、できれば避けたいといった感じです。 3.実行したいスクリプトは一般ユーザなのですが、 途中、root権限で実行させたいスクリプトがあります。 こんな回答で解りますでしょうか?

  • windfactA
  • ベストアンサー率63% (52/82)
回答No.1

OSが何かわからないので完全な回答はできませんが、 「sudo」というコマンドを調べてみてください。 # man sudo 一般的な説明は↓こちらにも。

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html
rariko
質問者

お礼

お礼が遅くなりました。 回答どうもありがとうございました。

関連するQ&A

専門家に質問してみよう