プロが教える店舗&オフィスのセキュリティ対策術

root権限に限らないのですが、他のユーザーの権限でしか実行できないコマンドを自分で実行する方法が知りたいのです。
と言っても、rootや他ユーザーのパスワードを知っているという前提です。

例えば、通常ユーザーで作業をしているときに、root権限で行う必要のあるコマンドを実行したいとします。
今は、suでログインしてから実行していますが、shellスクリプトで実行したいと思っています。

どういったshellスクリプトになりますでしょうか?

A 回答 (2件)

ひとつの方法は、su の man を詳しく見てみることです。



例えば、GNU の su には、-c というオプションがあり、コマンドを指定できます。
例えば、

% su -c ls -

で、root 権限で ls を実行できます。

もうひとつの方法は sudo というプログラムを使うこと。参考URLに紹介して
おきます。

もし、あなたが C 言語と、システムコールについてそこそこ詳しいのであれば、
プログラムを作るのは、さして難しいことではありません。setuid という
関数のマニュアルを読んでみてください。

参考URL:http://www.courtesan.com/sudo/

この回答への補足

suコマンドにそういうオプションがあったのですね。
manをちゃんと見る癖をつけないとだめですね~。

今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので、su -cでは難しそうです。
1行ごとにpasswdを入力する必要がありますよね?

そういう場合はsudoになるのでしょうか?
この方向でも考えてみます。

補足日時:2001/09/15 12:22
    • good
    • 0

> 今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので



であれば、そのいくつかの操作をまとめてシェルスクリプトにして、
それを su の -c に渡せば良いですね。

例えば、rally というユーザで、シェルスクリプト名が do_rally.sh とします。
スクリプトに実行権限がついていなければ

% su - rally -c "sh do_rally.sh"

という感じ。実行権限がついていれば

% su - rally -c do_rally.sh

で良いです。

ただ、最低一回はパスワードの入力があるので、su を使っている限りは
それからは逃れられません。

# ちょっと遅くなったので、もう sudo を使っているかな?
    • good
    • 2
この回答へのお礼

> % 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つで済みますね。
#なんで気づかなかったんだろう・・・。(^^;

ありがとうございました。

お礼日時:2001/09/17 23:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!