web-dev-qa-db-ja.com

シェルスクリプトの途中からスーパーユーザーを終了するにはどうすればよいですか?

ほとんどのコマンドをsesuユーザーで実行する必要があるシェルスクリプトがあり、次にいくつかのコマンドを現在のユーザーとして実行する必要があります。これで私を助けてくれませんか?

2
user3171821

毎回パスワードを指定したくない場合は、sesusudoersグループに追加し、次のようにコマンドを実行します。

Sudo su -c "command string"

こちらです command stringスーパーユーザー(rootなど)として実行されます。

1
LetMeSOThat4U

コマンド

    exit

現在のシェルを閉じます。ユーザーのようなシェルを実行していた場合[〜#〜] x [〜#〜]その後、ユーザーに切り替えました[〜#〜] y [〜#〜]exitあなたがいたシェルを閉じます[〜#〜] y [〜#〜]そしてあなたを[〜#〜] x [ 〜#〜]

1
MariusMatutiae

私は最近同じような状況にあります。これは、スクリプトが呼び出されたときにすぐにスーパーユーザーレベルに移動し、その後通常のユーザータスクを実行するために行ったことです。私はそれがあなたが望ましい解決策に到達する方法を見つけるのを助けるかもしれないと思います:

#!/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
0
Tfb9

su を使用して他のユーザーに切り替え、-cオプションを使用してコマンドを実行できます。

 su anotherUser -c "ls /"

Sudo があるかどうかを確認し、自分のケースで使用できるかどうかを検討してください。上記のsuサンプルはanotherUserのパスワードを要求しますが、これは煩わしいかもしれません。

0
ShinTakezou