Saya sudah membacanya dari manual tetapi saya tidak bisa melihat perbedaannya ..
su
- ubah ID pengguna atau menjadi pengguna super
sudo -s [command]
Opsi -s
(shell) menjalankan shell yang ditentukan oleh variabel lingkungan SHELL jika diatur atau shell seperti yang ditentukan dalam passwd (5). Jika suatu perintah ditentukan, itu diteruskan ke shell untuk dieksekusi. Kalau tidak, shell interaktif dijalankan.
sudo -i
menghilang deskripsi dalam manual
su user
untuk login dari shell yang tidak terpercaya, tetapisu - user
. Lihat unix.stackexchange.com/q/7013/8250sudo -i
itu buruk, tetapi Anda pasti bisa mengacaukannya dengan menggunakannyaJawaban:
Perbedaan utama antara perintah-perintah ini adalah cara mereka membatasi akses ke fungsinya.
su
(yang berarti "pengguna pengganti" atau "pengguna beralih") - tidak persis seperti itu, ia memulai instance shell lain dengan hak istimewa dari pengguna target. Untuk memastikan Anda memiliki hak untuk melakukan itu, ia meminta Anda kata sandi pengguna target . Jadi, untuk menjadi root, Anda perlu tahu kata sandi root. Jika ada beberapa pengguna di mesin Anda yang perlu menjalankan perintah sebagai root, mereka semua harus tahu kata sandi root - perhatikan bahwa kata sandi itu akan sama. Jika Anda perlu mencabut izin admin dari salah satu pengguna, Anda perlu mengubah kata sandi root dan hanya memberitahukannya kepada orang-orang yang perlu menjaga akses tetap berantakan.sudo
(hmm ... apa mnemoniknya? Super-User-DO?) benar-benar berbeda. Ia menggunakan file config (/ etc / sudoers) yang mencantumkan pengguna mana yang memiliki hak untuk tindakan tertentu (jalankan perintah sebagai root, dll.) Ketika dipanggil, ia meminta kata sandi pengguna yang memulai - untuk memastikan orang di terminal adalah "joe" yang sama dengan yang terdaftar di/etc/sudoers
. Untuk mencabut hak admin dari seseorang, Anda hanya perlu mengedit file konfigurasi (atau menghapus pengguna dari grup yang tercantum dalam konfigurasi itu). Ini menghasilkan pengelolaan hak istimewa yang jauh lebih bersih.Sebagai akibatnya, di banyak sistem berbasis Debian
root
pengguna tidak memiliki kata sandi - artinya tidak mungkin untuk login sebagai root secara langsung.Juga,
/etc/sudoers
memungkinkan untuk menentukan beberapa opsi tambahan - yaitu pengguna X hanya dapat menjalankan program Y dll.Sering digunakan
sudo su
kombinasi bekerja sebagai berikut: pertamasudo
meminta Anda untuk Anda password, dan, jika Anda diperbolehkan untuk melakukannya, memanggil perintah berikutnya (su
) sebagai super-user. Karenasu
diminta olehroot
, itu tidak mengharuskan Anda untuk memasukkan kata sandi pengguna target. Jadi,sudo su
memungkinkan Anda untuk membuka shell sebagai pengguna lain (termasuk root), jika Anda diizinkan akses super-pengguna oleh/etc/sudoers
file.sumber
su
sebagai "pengguna beralih", tetapi selalu sebagai pengguna super; perilaku default tanpa nama pengguna orang lain (meskipun masuk akal). Dari wikipedia : "Perintah su, juga disebut sebagai super user [1] pada awal 1974, juga disebut" pengguna pengganti "," pengguna spoof "atau" set pengguna "karena memungkinkan mengubah akun yang terkait dengan arus terminal (jendela). "sudo su
?sudo
memungkinkan Anda menjalankan perintah di akun pengguna Anda sendiri dengan hak akses root.su
memungkinkan Anda beralih pengguna sehingga Anda benar-benar masuk sebagai root.sudo -s
menjalankan shell dengan hak akses root.sudo -i
juga memperoleh lingkungan pengguna root.Untuk melihat perbedaan antara
su
dansudo -s
, lakukancd ~
dan kemudianpwd
setelah masing-masing. Pada kasus pertama, Anda akan berada di direktori home root, karena Anda root. Dalam kasus kedua, Anda akan berada di direktori home Anda sendiri, karena Anda sendiri dengan hak akses root.Ada lebih banyak diskusi tentang pertanyaan ini di sini .
sumber
cd ~
hasilnya berbeda adalah hasil dari sudo -s tidak menyetel variabel lingkungan $ HOME.sudoers
file mengontrol siapa yang dapat menjalankan perintah mana sebagai pengguna lain, tetapi itu terjadi sebelum perintah dijalankan. Namun, begitu Anda diizinkan memulai proses seperti, katakanlah, root - proses yang berjalan memiliki UID root dan memiliki akses penuh ke sistem, tidak ada cara bagi sudo untuk membatasi itu. Sekali lagi, Anda selalu menjadi diri sendiri atau root, tidak ada "setengah-setengah". Jadi, jikasudoers
file memungkinkan Anda untuk menjalankan shell sebagai root - izin di shell itu tidak dapat dibedakan dari shell root "normal".Jawaban ini adalah duplikat dari jawaban saya pada duplikat dari pertanyaan ini , taruh di sini pada jawaban kanonik sehingga orang dapat menemukannya!
Perbedaan utama antara
sudo -i
dansudo -s
adalah:sudo -i
memberi Anda lingkungan root, yaitu Anda~/.bashrc
diabaikan.sudo -s
memberi Anda lingkungan pengguna, sehingga Anda~/.bashrc
dihormati.Berikut ini sebuah contoh, Anda dapat melihat bahwa saya memiliki aplikasi
lsl
di~/.bin/
direktori saya yang dapat diaksessudo -s
tetapi tidak dapat diakses dengansudo -i
. Perhatikan juga bahwa Bash prompt berubah sesuai keinginansudo -i
tetapi tidak dengansudo -s
:Meskipun
sudo -s
nyaman untuk memberi Anda lingkungan yang Anda kenal, saya merekomendasikan penggunaannyasudo -i
karena dua alasan:.bashrc
.sumber
sudo -s
menyediakan lingkungan yang akrab bagi pengguna?su
meminta kata sandi pengguna "root".sudo
meminta kata sandi Anda sendiri (dan juga memeriksa apakah Anda diizinkan menjalankan perintah sebagai root, yang dikonfigurasi melalui/etc/sudoers
- secara default semua akun pengguna yang termasuk dalam grup "admin" atau "sudo" diizinkan menggunakan sudo).sudo -s
meluncurkan shell sebagai root, tetapi tidak mengubah direktori kerja Anda.sudo -i
mensimulasikan login ke akun root: direktori kerja Anda akan/root
, dan root.profile
dll. akan bersumber seolah-olah saat login.sumber
sudo -s
hampir sama dengansu
($ HOME berbeda) dansudo -i
sama dengansu -
Di Ubuntu atau sistem terkait, saya tidak menemukan banyak gunanya
su
dalam pengertian tradisional, super-user.sudo
menangani kasing itu jauh lebih baik. Namun,su
bagus untuk menjadi pengguna lain dalam situasi satu kali di mana konfigurasi sudoers akan konyol.Misalnya, jika saya memperbaiki sistem saya dari live CD / USB, saya akan sering memasang hard drive saya dan hal-hal lain yang diperlukan
chroot
ke dalam sistem. Dalam kasus seperti itu, perintah pertama saya umumnya:Dengan begitu, saya beroperasi bukan sebagai root, tetapi sebagai pengguna normal saya, dan kemudian saya gunakan
sudo
sesuai kebutuhan.sumber
su
Meminta kata sandi root, menjadi root, membuka shell non-login interaktif.su -
Meminta kata sandi root, menjadi root, membuka shell login interaktif.sudo -s
Minta kata sandi Anda, menjadi root, membuka shell non-login interaktif.sudo -i
Minta kata sandi Anda, menjadi root, buka shell login interaktif.Praktik terbaik adalah menggunakan keduanya.
sudo su
Minta kata sandi Anda,su
jadikan root untuk sedetik dan jalankan sebagai root`.sudo su -
Minta kata sandi Anda, jadikan root untuk sedetik dan jalankansu -
sebagai root.Jadi dalam hal ini Anda menjalankan
su
menggunakansudo
dan Anda tidak perlu tahu kata sandi root yang sebenarnya. Hasilnya sama dengansu
dansu -
.sumber