Saya telah melihat banyak komentar di sini di Tanya Ubuntu tentang preferensi dalam menggunakan sudo -s
daripada sudo su
.
Bagi saya, kedua perintah itu melakukan hal yang persis sama. Tetapi mengapa sudo -s
seharusnya lebih baik?
Saya telah melihat banyak komentar di sini di Tanya Ubuntu tentang preferensi dalam menggunakan sudo -s
daripada sudo su
.
Bagi saya, kedua perintah itu melakukan hal yang persis sama. Tetapi mengapa sudo -s
seharusnya lebih baik?
Jawaban:
Saya pikir sudo -s
tidak "lebih baik", hanya saja berbeda.
sudo -s
menyimpan direktori $ HOME Anda, jadi ketika Anda memulai program, mereka akan menggunakan file konfigurasi Anda (dan bukan root) dll. Kerugian: mereka juga dapat mengubah kepemilikan file Anda di direktori $ HOME, contoh khasnya adalah .Xauthority
file, tetapi saya tidak pernah mengalami masalah dengan itu.
sudo su
atau sudo -i
program akan menggunakan direktori home root dan file konfigurasinya. Ini mungkin lebih intuitif, tetapi itu juga berarti bahwa itu tidak akan menggunakan konfigurasi apa pun yang mungkin Anda tetapkan untuk diri sendiri (alias, bash history, ...).
Karena sudo -s
tidak akan mengubah variabel lingkungan Anda, terutama $HOME
yang akan tetap ada HOME=/home/USER
. Jika Anda menggunakan sudo su
ini akan berubah HOME=/root
yang dapat memiliki efek samping negatif ketika program Anda mulai mencoba mengakses direktori home pengguna Anda.
Jadi pada dasarnya itu seperti sudo
vs gksudo
ketika menjalankan program grafis.
Selain perbedaan yang telah disebutkan dengan variabel lingkungan, saya menemukan sudo su
konyol dan boros karena Anda meminta sudo
untuk menjalankan su
sebagai root, dan meminta untuk menjalankan shell sebagai root. Mengapa meminta sebuah program untuk meminta sebuah program untuk memberi Anda shell root, ketika Anda bisa meminta program pertama memberi Anda shell itu? Apakah itu penting secara praktis? Tidak, saya hanya bertele-tele.
sudo su
untuk menjadi root, ya, langsung saja sudo -i
, misalnya. Tapi itu tidak membantu ketika Anda ingin menjadi pengguna yang berbeda: sudo su - myuser
.
sudo -i
akan berubah ke /root
direktori dan sudo su
akan tetap di direktori Anda.
sudo -u myuser
,.
Saya tidak setuju dengan jawaban lain ketika mempertimbangkan kasus ketika Anda ingin masuk sebagai pengguna yang tidak memiliki shell. Itu adalah kasus yang sangat umum dengan pengguna yang ditugaskan ke layanan.
Menggunakan "sudo su" akan memulai shell yang ditentukan oleh pengguna. Namun dalam kasus pengguna yang ditugaskan untuk proses server, shell adalah / usr / bin / false dan logging akan gagal. Sebaliknya, Anda harus memasukkan sebagai:
sudo -sHu <server-user>
yang akan masuk Anda dan cd ke jalur home-nya, bahkan jika pengguna tidak memiliki shell yang ditugaskan
sudo -i
atausudo su
lebih baik daripadasudo -s
untuk alasan yang disebutkan di sini: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Juga: ini adalah kemungkinan duplikat dari superuser.com/questions/29/…