Mengapa satu lebih disukai daripada yang lain dalam contoh ini?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Harap berikan tautan ke dokumentasi Ubuntu.
command-line
sudo
cabai555
sumber
sumber
Jawaban:
The
sudo su
perintah singkatan dari "switch user", dan memungkinkan Anda untuk menjadi pengguna lain. Ini memungkinkan pengguna yang diizinkan untuk menjalankan perintah sebagai superuser atau pengguna lain, sebagaimana ditentukan dalam file sudoers.Opsi i (mensimulasikan login awal) menjalankan shell yang ditentukan oleh entri basis data kata sandi pengguna target sebagai shell login. Ini berarti bahwa file sumber daya khusus masuk seperti .profile atau .login akan dibaca oleh shell. Jika suatu perintah ditentukan, perintah itu diteruskan ke shell untuk dieksekusi melalui opsi shellc shell. Jika tidak ada perintah yang ditentukan, shell interaktif dijalankan.
Sumber: ManPage
sumber
sudo su
Anda diminta kata sandi, bukan kata sandi root. Pengguna root bahkan tidak perlu memiliki kata sandi. Bagaimanapun juga, jika admin menggunakan kata sandi root, itu tidak berarti bahwa semua pengguna biasa mengetahuinya.sudo
berjalansu
sebagai root, dan root bisasu
ke pengguna mana pun tanpa mengetahui kata sandi mereka. Kesalahpahaman mendasar tentang cara kerja sistem yang layak mendapatkan IMO downvote.sudo -i
juga tidak akan meminta kata sandi root, jadi tidak relevan dengan pertanyaan.sudo su
hanya mengubah pengguna saat ini untuk melakukan root. Pengaturan lingkungan (seperti PATH) tetap sama.sudo -i
menciptakan lingkungan baru seolah-olah root baru saja masuk.Perbedaannya lebih terlihat jika Anda menggunakan pengguna lain. Setelah
sudo su bob
Anda akan menjadi bob, tetapi di tempat yang sama. Setelahsudo -i -u bob
Anda menjadi bob, di direktori home bob, dengan shell default bob dan dengan bob.profile
dan semua skrip login lainnya telah dijalankan.Lihat
man sudo
untuk detail lebih lanjut tentang apa yang-i
dilakukan. Sayangnya,man su
detailnya ringan.Menemukan versi
man su
(dari login-1: 4.1.4.2 + svn3283-3ubuntu5.1) yang memiliki yang berikut sebagai berikut:Jadi apakah dan sejauh mana
sudo su
perubahan lingkungan tergantung pada distribusi dan pengaturan Anda. Dengan demikiansudo -i
secara teori lebih portabel.sumber
su
tidak mengubah pengaturan lingkungan, dan dapat digunakan untuk mensimulasikan login menggunakan-
atau-l
. Bahkan tanpa-l
,$PATH
yang berubah. Uji klaim ini sebelum mengajukannya! (Apakah maksud Anda ituPWD
tetap sama?)sudo su -
dansudo -i
?$PATH
itu berubah ketika saya gunakansu
tanpasudo
(menggunakan kata sandi root). Menurutinfo su
(yang mungkin merupakan hal yang lebih baik untuk ditautkan dalam jawaban Anda),su
memang membaca entri kata sandi untuk pengguna yang Anda menjadi. Mungkin$PATH
perubahan yang saya amati tergantung pada sistem (I'm on Debian 7).man su
Kata saya (yang lebih panjang dari yang Anda tautkan) mengatakan bahwa itu bagian darishadow-utils 4.1.5.1
.man
Halaman saya juga mengatakan bahwa$PATH
ini diatur bahkan jika--preserve-environment
digunakan. Jadi saya kira itu hanya perbedaan antara versi yang berbedasu
./etc/pam.d/sudo
dan/etc/pam.d/su
dapat diatur untuk melakukan hal yang sama sekali berbeda atau persis sama.Masalah utama adalah salah satu (tidak begitu) pengaturan lingkungan waras.
Menggunakan
sudo su
shell baru mendapatkan lingkungannya dari pengguna yang mengeluarkan perintah - yang mungkin bermasalah.Dengan
sudo -i
Anda mendapatkan shell root bersih.Lihat Catatan khusus tentang sudo dan kerang
Tetaplah mengamati bahwa jarang diperlukan sama sekali untuk membuat shell root.
sumber
sudo -i
mirip dengansudo su -
, yang sebenarnya tidak mendapatkan lingkungannya dari pengguna yang mengeluarkan perintah.sudo su
vssudo -i
.