一連のコマンドを自動化するシェルスクリプトを書きたい。問題は、一部のコマンドをスーパーユーザーとして実行する必要があり、一部のコマンドをスーパーユーザーとして実行してはならないことです。私がこれまでに行ったことは、次のようなものです。
#!/bin/bash
command1
sudo command2
command3
sudo command4
問題は、これは、誰かがcommand1が終了するまで待ってからパスワードの入力を求められることを意味します。その後、command3に十分な時間がかかる場合は、command3が終了するのを待つ必要があります。その人が起き上がって立ち去り、1時間後に戻って終わってくれたらいいのにと思います。たとえば、次のスクリプトにはこの問題があります。
#!/bin/bash
sleep 310
sudo echo "Hi, I'm root"
sleep 310
sudo echo "I'm still root?"
ユーザーが最初にパスワードを1回入力するだけで、すぐに離れることができるようにするにはどうすればよいですか?
アップデート:
回答ありがとうございます。Mac OS X Lionで実行していて、Stephen Pのスクリプトを実行すると、さまざまな結果が得られました:( $ HOMEも追加しました)
pair@abbey scratch$ ./test2.sh
uid is 501
user is pair
username is
home directory is /Users/pair
pair@abbey scratch$ sudo ./test2.sh
Password:
uid is 0
user is root
username is root
home directory is /Users/pair