web-dev-qa-db-ja.com

Sudoで生成されたファイルがrootによって所有されているのはなぜですか?

'#Sudo touch newfile'を実行すると、ファイルはrootではなく自分が所有することを期待していました。これは、Sudoがユーザーにroot権限を与えているが、実際にはユーザーを切り替えないことを理解しているためです。

須藤が何であるかについて根本的な誤解がありますか?

5
Yarin

Sudoを使用する場合、スーパーユーザー(root)としてプログラムを実行するため、作成されるファイルはスーパーユーザーとして作成されます。

8
mipadi

Mipadiが言ったことは、これら2つの「whoami」(「私は誰ですか?」)コマンドの出力を比較することで実証できます。

$須藤whoami
$ whoami

6
JRobert

Sudo(名前はsu "do"またはスーパーユーザー "do"に由来します)を使用すると、rootとしてコマンドを実行できます。ユーザーに異なる特権を与えることはありません。したがって、#Sudo touch newfileを実行すると、コマンドtouch newfileを実行したのはユーザーrootであり、それがnewfileがユーザーrootによって所有されている理由です。

詳細については、 Sudoページ を参照してください。

4
Darko

Sudoの「su」は「ユーザーの切り替え」と考えることができます。どのユーザーとして実行するかを指定しない場合、デフォルトでrootになります。これは、同じくsuに関連付けられているスーパーユーザーです。

Sudo -u yourself touch newfileファイルをyourselfが所有する場合。

SudoがユーザーIDを変更しないという仮定は、セッションの残りの部分の観点からは正しいです。 su + touch newfile + exitと考えてください。したがって、シェルでは自分自身を「維持」しますが、Sudoは、別の有効なユーザーIDを使用して新しいプロセスでコマンドを実行します。

3
MattBianco