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

UNIXシェルの途中でユーザーを切り替える方法はありますか。

例)
 ・ユーザAで先頭100行を実行し、残りはユーザBで実行など・・・。

 ※suできれば良いのですが、対話形式のパスワード入力を促されてしまいますよね・・・。

A 回答 (4件)

#3です。


>これを一つのシェルにして、都度ログインしている部分、及び、コマンド実行部分を自動化したい・・・、と言うのが趣旨です。
>それで、まとめたシェルについては、rootで実行ではなくて、一般ユーザで行ないたい・・・。
>という流れとなります。ニュアンスは伝わりましたでしょうか。

伝わってますよ。その前提での回答です。回答を良くお読みください。cmdaとcmdbを並べた親コマンドを作ってそれを一般ユーザーで実行します。
ただし、都度ログインということはログイン時の環境変数設定とかも影響するかもしれないので、必要に応じて、cmda, cmdb の先頭で、source ~usera/.profile などを実行する必要があります。

この回答への補足

こんばんは。
何度もありがとうございました。
とりあえず、色々やってみます。
どうもありがとうございました。

補足日時:2004/11/14 22:27
    • good
    • 1

ファイルを分けてよければ、前半をcmda 後半をcmdbとして、rootユーザーで以下を実行し、


chown ユーザA cmda
chown ユーザB cmdb
chmod 4755 cmda cmdb
と、setuidビットをセットすれば、あとは一般ユーザで親コマンドからcmdaとcmdbを順に呼び出せば良いです。

この回答への補足

こんにちは。

ちょっと方向性が変わってきている?のかも知れませんので、軌道修正致しますと・・・。

現状、ある事を達成させる為に、複数のユーザを駆使して各種シェルを起動しています(都度、ログイン後・・・)。
※「都度、ログイン」って結構重要です。

つまり、事柄1はユーザA。事柄2はユーザB、、と言った具合で・・・。(事柄はいくつも存在)

これを一つのシェルにして、都度ログインしている部分、及び、コマンド実行部分を自動化したい・・・、と言うのが趣旨です。

それで、まとめたシェルについては、rootで実行ではなくて、一般ユーザで行ないたい・・・。

という流れとなります。ニュアンスは伝わりましたでしょうか。

PS:文章だけで伝えるのって難しいもんですね。

補足日時:2004/11/14 10:11
    • good
    • 1

対話形式の入力を自動化するには、Expectを利用してみるのも一つの手ではないでしょうか?


Expectのスクリプト自身にかファイルとしてパスワードリストを持たせておいて、su部分をExpectで実行といった流れになると思います。

参考URL:http://kansai.anesth.or.jp/gijutu/expect/howto-e …

この回答への補足

こんにちは。
すみません、回答を頂いていた様なのですが、ちょっと忙しすぎてしまいまして手が付けられていませんでした。ただ、Expectのさわりだけはいじってみたのですが・・・。
時間が取れる様になったら、挑戦してみます。
ありがとうございました。

補足日時:2004/11/14 09:50
    • good
    • 0

ルートユーザでシェルを実行ではNGですか?


ルートユーザで実行し、ユーザAの部分はsuでAユーザになって、ユーザBの部分はsuでBユーザになって・・・
(ルートなのでパスワード聞かれないので)

他にもrshとか手はあるかと思いますが、

この回答への補足

ルートユーザは極力使いたくないかと思ってます。
また、r系コマンドもセキュリティ面を考えると、使いたくないかなと…。

何か他に良い手はないものでしょうか?

補足日時:2004/11/05 14:20
    • good
    • 0

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