ほとんどのコマンドをsesu
ユーザーで実行する必要があるシェルスクリプトがあり、次にいくつかのコマンドを現在のユーザーとして実行する必要があります。これで私を助けてくれませんか?
毎回パスワードを指定したくない場合は、sesu
をsudoers
グループに追加し、次のようにコマンドを実行します。
Sudo su -c "command string"
こちらです command string
スーパーユーザー(rootなど)として実行されます。
コマンド
exit
現在のシェルを閉じます。ユーザーのようなシェルを実行していた場合[〜#〜] x [〜#〜]その後、ユーザーに切り替えました[〜#〜] y [〜#〜] 、exitあなたがいたシェルを閉じます[〜#〜] y [〜#〜]そしてあなたを[〜#〜] x [ 〜#〜]
私は最近同じような状況にあります。これは、スクリプトが呼び出されたときにすぐにスーパーユーザーレベルに移動し、その後通常のユーザータスクを実行するために行ったことです。私はそれがあなたが望ましい解決策に到達する方法を見つけるのを助けるかもしれないと思います:
#!/bin/bash
# generic_Sudo.sh
# Tool that demonstrates in-then-out of Sudo
# This demo is pointless if called with 'Sudo generic_Sudo.sh'
# Need root priviledges for some superuser work
if (( EUID != 0 )); then # If the user is not "root":
# In general one should use ((..)) for testing numbers and integer variables, and [[..]] for testing strings and files.
Sudo $0 # Relaunch it as "root".
EXITCODE=$?
printf "su mode OFF.\n" # If we got here, we left superuser mode
printf "EUID is: %d\n" $EUID
printf "Exit code %d\n" $EXITCODE
exit $EXITCODE # Once it finishes, exit gracefully.
else
printf "su mode ON.\n"
fi # End if.
printf "EUID is: %d\n" $EUID
# Some superuser work
printf "Some superuser work was done.\n"
exit 0