- ベストアンサー
root権限の実行コマンドを通常ユーザーで実行
root権限に限らないのですが、他のユーザーの権限でしか実行できないコマンドを自分で実行する方法が知りたいのです。 と言っても、rootや他ユーザーのパスワードを知っているという前提です。 例えば、通常ユーザーで作業をしているときに、root権限で行う必要のあるコマンドを実行したいとします。 今は、suでログインしてから実行していますが、shellスクリプトで実行したいと思っています。 どういったshellスクリプトになりますでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので であれば、そのいくつかの操作をまとめてシェルスクリプトにして、 それを su の -c に渡せば良いですね。 例えば、rally というユーザで、シェルスクリプト名が do_rally.sh とします。 スクリプトに実行権限がついていなければ % su - rally -c "sh do_rally.sh" という感じ。実行権限がついていれば % su - rally -c do_rally.sh で良いです。 ただ、最低一回はパスワードの入力があるので、su を使っている限りは それからは逃れられません。 # ちょっと遅くなったので、もう sudo を使っているかな?
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
ひとつの方法は、su の man を詳しく見てみることです。 例えば、GNU の su には、-c というオプションがあり、コマンドを指定できます。 例えば、 % su -c ls - で、root 権限で ls を実行できます。 もうひとつの方法は sudo というプログラムを使うこと。参考URLに紹介して おきます。 もし、あなたが C 言語と、システムコールについてそこそこ詳しいのであれば、 プログラムを作るのは、さして難しいことではありません。setuid という 関数のマニュアルを読んでみてください。
補足
suコマンドにそういうオプションがあったのですね。 manをちゃんと見る癖をつけないとだめですね~。 今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので、su -cでは難しそうです。 1行ごとにpasswdを入力する必要がありますよね? そういう場合はsudoになるのでしょうか? この方向でも考えてみます。
お礼
> % su - rally -c "sh do_rally.sh" あ、これいいですね。 > # ちょっと遅くなったので、もう sudo を使っているかな? sudoはちょっと難しかったので、"su root"でログインしてからshellを実行するようにしてました。 そのshellでは、root以外のユーザーで実行したいプログラムもあったので、下のように書いてました。 su rallyx -c "runAAA" 1.su rootでroot権限を得る。 2.シェルを実行する。 という2つの処理をa-kumaさんの方法だと1つで済みますね。 #なんで気づかなかったんだろう・・・。(^^; ありがとうございました。