Saya tidak mengerti mengapa su -
lebih disukai daripada su
login sebagai root.
sumber
Saya tidak mengerti mengapa su -
lebih disukai daripada su
login sebagai root.
su -
mengaktifkan shell login setelah beralih pengguna. Shell login me-reset sebagian besar variabel lingkungan, memberikan basis yang bersih.
su
hanya mengganti pengguna, menyediakan 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 "$@"
exit 0
$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"
Sekarang, Anda bertanya kepada admin Anda mengapa Anda tidak bisa cat
membuat file dummy di folder home 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 $PATH
variabel yang rusak tidak diatur ulang. Ini tidak akan terjadi, jika admin meminta su -
sebaliknya.
su --
sama dengansu
.umask
000 seperti itu atau itu tidak akan berhasil.su
file ke dalam PATH. Tidak terlalu sulit untuk meniru perilaku yang sebenarnyasu
. Pengguna super telah ceroboh :-)su --
BUKAN sama dengansu -
:--
memberi tahu penangan opsi getopt (atau yang serupa) untuk berhenti memproses baris perintah untuk opsi lebih lanjut (berguna misalnya jika sisanya berisi nama file yang dapat dimulai dengan '-'). Yaitu, di "rm-i - f": -f kemudian diperlakukan sebagai argumen biasa, jadi di sini sebagai nama file untukrm -i
, dan tidak sebagai additionnal-f
pilihan untukrm
perintah. Begitusu --
adilsu
dan tidaksu -
! Jadisu --
akan sama tidak amannya dengan contoh (lucu dan instruktif) givan oleh wag. Gunakansu -
.su -
mencatat Anda sepenuhnya sebagai root, sedangkansu
membuatnya Anda berpura-pura menjadi root.Contoh paling jelas dari hal ini
~
adalah direktori home root jika Anda menggunakansu -
, tetapi direktori home Anda sendiri jika Anda menggunakannyasu
.Bergantung pada sistem Anda, ini juga dapat berarti perbedaan dalam
PATH
file prompt ,, atau 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 menggunakansu
, 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
sudo
, yang memiliki-s
opsi untuk mulai menjalankan shell sebagai root. Tentu saja, ini memiliki aturan yang berbeda juga, dan mereka berubah tergantung pada distribusi yang Anda gunakan.sumber
.bashrc
atau/etc/bashrc
atau/etc/profile.d
sedang disetelPATH
. Cariif [ $UID -eq 0 ]
atau semacamnya.$USER
misalnya dibiarkan tidak berubah.sudo su
?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 - ini akan memindahkan pengguna ke root dan juga membawa Anda ke / root yang merupakan direktori home root.
sumber
/
atau apa pun yang didefinisikan sebagai direktori home rootPerbedaan utama adalah:
su - username
mengatur lingkungan shell seolah-olah itu adalah login bersih sebagai pengguna yang ditentukan, itu mengakses dan menggunakan variabel lingkungan pengguna tertentu,su username
baru saja memulai shell dengan pengaturan lingkungan saat ini untuk pengguna yang ditentukan.Jika nama pengguna tidak ditentukan dengan
su
dansu -
, akun root tersirat sebagai default.sumber