Sudo su "username"とsu "username"の違いは何ですか?
どちらがより高い特権を持っていますか? Sudo su "username"を使用してrootにログインすると、1つのコマンドに対してのみrootになりますか?つまり、スクリプトの最初の部分は問題なく動作する可能性がありますが、残りの部分は動作しません。したがって、この場合はsu "username"が推奨されます。これは、より高い特権を持っているためですか? 2つのコマンドの違いを教えてください、ありがとうございます。
違いは次のとおりです。
su <someuser>
は、ユーザーsomeuser
のシェルを起動します。 rootでない限り、someuser
のパスワードを尋ねられます。su
(ユーザー名なし)は、ユーザーroot
のシェルを起動します(ルートパスワードを要求した後)。Sudo
はパスワードを要求し、(Sudo権限がある場合)root権限でコマンドを実行します(Sudo reboot
はパスワードを要求し、コンピューターを再起動します)。Sudo su <somesuer>
はroot権限でsu
を実行します。そのため、someuser
のパスワードは要求されません。ただし、Sudo権限を確認するためにyourパスワードを要求します。その後、シェルを起動しますfor somesomeuser。権限に関して、Sudo su <someuser>
またはsu <someuser>
によって開かれるシェルに違いはありません。これはis n'tシェルプロセスが親プロセスの権限に昇格できないため、セキュリティの問題です。
あなたcanプロセスツリーを見ると違いがわかります。 Sudo su <someuser>
が示す(bashを想定):
+───bash───su───bash
su <someuser>
が示している間:
+───bash───Sudo───su───bash
次の質問はおそらく、ユーザー入力を必要としない無人スクリプトでパスワードを渡す方法です。 2つのオプションがあると思います。
echo <yourpassword> | Sudo -S su -l <someuser>
またはそれ以上:echo <yourpassword> | Sudo -S su -l <someuser> -c '<somecommand>'
。パスワードが含まれているため、スクリプトは自分だけが読み取り可能であることを確認してください。より間接的には、パスワードをファイルに保存してSudoに送信することができます。その後、スクリプトは読み取り可能になりますが、パスワードファイルは読み取れません。