私が経験している問題は、コマンドを入力したとき
su - root
マイシェルスクリプトファイルの先頭に、ユーザーにパスワードの入力を求めるメッセージを表示し、次の手順を実行します。いいえ残りのシェルスクリプトを続行します。その後、端末を介してシェルスクリプトを手動で見つけて実行する必要があります。ユーザーがrootとしてログインしていることを確認してから、残りのシェルスクリプトに進むスクリプトが必要です。
つまり、任意のユーザーでスクリプトを実行したいがスクリプトが実行を開始したら、ユーザーは root に変更し、完了するまで残りのスクリプトを root として実行し続ける必要があります。これは可能ですか?
ベストアンサー1
これは実装が簡単です。
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "$@"
現在のユーザーがrootでない場合は、スクリプトを再実行してくださいsudo
。
sudo
パラメータを保存できるので、su
ここでは。を使用する場合、su
コマンドは次のようになります。su -c "$0 $@"
スペースまたは特殊シェル文字が含まれていると、引数が破損します。
シェルがbashの場合、外部呼び出しを避けることができますwhoami
。
(( EUID != 0 )) && exec sudo -- "$0" "$@"