sudo su「ユーザー名」とsu「ユーザー名」


5

説明してください、どう違いますか。 sudo su "username" su "username"

どちらがより高い特権を持っていますか?でrootにログインすると sudo su "username" 、私は1つのコマンドだけのためのルートですか?それで、スクリプトの始めはうまくいくが残りはそうではないでしょうか? だからこの場合 su "username" それがより高い特権を持っているので、提案されますか? 2つのコマンドの違いを説明してください、ありがとうございます。

回答:


9

違いは次のとおりです。

  • su <someuser> ユーザー用のシェルを起動します someuser。あなたがrootでない限り、あなたはパスワードを聞かれるでしょう。 someuser
  • su (ユーザ名なしで)ユーザ用のシェルを起動する root (rootパスワードを聞いた後)。
  • sudo パスワードを要求し、(sudo権限があると仮定して)root権限でコマンドを実行します( sudo reboot パスワードを要求してコンピュータを再起動します。
  • sudo su <somesuer> 実行する su root権限でだからそれは求めていません someuser のパスワードしかしそれは求めます きみの sudoの権利を確認するためのパスワード。その後シェルを起動します ユーザーsomeuser

特権に関して によって開かれるシェルに違いはありません。 sudo su <someuser> またはによって su <someuser>。この ではない シェルプロセスが親プロセスの特権に昇格できないため、セキュリティ上の問題があります。

君は できる プロセスツリーを見ると違いがわかります。 sudo su <someuser> ショー(bashを仮定):

+───bash───su───bash

しながら su <someuser> 示しています:

+───bash───sudo───su───bash

次の質問は、おそらく無人スクリプトでパスワードを渡す方法です。ユーザー入力は不要です。私は2つの選択肢があると思います。

  • cron(またはその変種)からスクリプトを実行してrootとして実行
  • 自分のアカウントからスクリプトを実行し、sudoの-Sオプションを次のように使用します。 echo <yourpassword> | sudo -S su -l <someuser> あるいはもっと良い: echo <yourpassword> | sudo -S su -l <someuser> -c '<somecommand>'。自分のパスワードが入っているので、スクリプトが自分だけが読めるようにしてください。もっと間接的に言えば、パスワードをファイルに保存し、それをsudoに渡すことができます。そうすれば、あなたのスクリプトは読めますが、あなたのパスワードファイルは読めません。

2
シェルを別のユーザーとして起動している場合は、次のコマンドを使用すると便利です。 su - <someuser>。それはすべてのそのユーザーの通常の環境をロードするでしょう。それを望まない場合もあるかもしれませんが、ユーザーが抱えている問題をトラブルシューティングしようとしている場合、通常の環境と同じように自分の環境を用意するのが便利です。
unkilbeeg

しかし、私が理解したように、シェルを別のユーザーとして起動したい場合、su&lt; someuser&gt;との間に大きな違いはありません。 sudo su&lt; someuser&gt;どちらのコマンドでも同じ特権が与えられます。したがって、私のscript.shはどちらの場合も正常に実行されるはずです。それとも何か違いはありますか?スクリプトがsu&lt; someuser&gt;で正常に実行されている可能性があります。 sudo su&lt; someuser&gt ;?と一緒にしないでください。
Peter

はい。 sudoはあなたのパスワードを尋ねます。取得できない場合は終了します。そのため、sudo suの代わりにsuを使用してください。 Sudo suは何も追加しません。
agtoever

1
違いは、root権限を持っていれば&lt; someuser&gt;のパスワードを知っている必要はないということです。 sudo su あなたにあげる。使用する su なしで sudo あなたはユーザーのパスワードを知る必要があります。一度ログオンした環境は同じです。走れない場合 sudoしかし、rootのパスワードを知っている、あなたが使用することができます su それから su <someuser> これで、再度&lt; someuser&gt;としてログオンできるようになります。彼/彼女のパスワードを知らずに。
AFH

@ AFH:その通りです。答えにそれを追加します。
agtoever
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.