Apa perbedaan antara sudo -i dan sudo su -

Jawaban:

30

Mereka mungkin menyediakan fungsional dekat dengan hal yang sama, tetapi tampaknya 'sudo -i' lebih ringan dan membuat beberapa referensi kembali berguna di lingkungan Anda.

Anda dapat melihat proses tambahan dengan melihat 'ps auxf' (f memberi Anda tampilan hutan)

sudo -i menghasilkan pohon proses ini

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

sudo su - menghasilkan pohon proses ini

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

Perhatikan bahwa mereka mulai dari proses bash yang sama pid, 4482, tetapi su - tampaknya akan menelurkan langkah lain.)

'Sudo' pertama Anda sudah meningkatkan level akses Anda ke root. Menjalankan su tanpa menentukan nama pengguna di dalam sudo mengubah pengguna saat ini untuk melakukan rooting dua kali.

Cara lain untuk menyelidiki ini adalah dengan menjalankan kedua perintah dengan strace -f.

strace -f -o sudoi sudo -i

vs.

strace -f -o sudosu sudo su -

Jika Anda membedakan kedua tali itu, Anda akan melihat lebih banyak exeve dijalankan untuk sudo su -.

Satu hal lagi.

sudo -i memelihara variabel lingkungan ekstra yang ditetapkan oleh SUDO.

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su - clobbers variabel tersebut.

Joel K
sumber
Terima kasih, saya memilih Anda sebagai jawaban yang benar. Satu pertanyaan lagi, jadi tidak sudo su -ada gunanya?
Howard
Jika Anda ingin mengalahkan SUDO kembali referensi itu bisa berguna. Jadi tidak ada gunanya dalam hal itu.
Joel K
Ada juga perbedaan besar dalam penanganan argumen, penanganan variabel lingkungan, dan keamanan ketika menjadi pengguna non-root. Lihat apa yang saya tambahkan di sini: serverfault.com/q/601140/102814
Craig Ringer
1

Tembakan menjawab: Tidak, mereka tidak sama.

Jawaban panjang: sudo dan su - adalah program yang berbeda yang menyelesaikan tugas yang sama, yaitu mengangkat Anda ke root privilege.

su dulu merupakan cara de facto menjadi root pada sistem Linux. Namun selalu ada kebutuhan untuk memisahkan hak istimewa dan meninggalkan beberapa info audit. Juga ketika Anda melakukan su - semua yang Anda lakukan dilakukan sebagai root dan berbahaya untuk memiliki kekuatan sebanyak itu. Di sinilah sudo datang untuk menyelamatkan.

sudo memiliki beberapa karakteristik yang tidak dimiliki su . Elemen kunci dalam sudo adalah kemampuannya untuk menjalankan perintah "satu" sebagai root dan kemudian memberikan hak istimewa kepada pengguna normal. Contoh: Hapus file yang dimiliki oleh root.

sudo rm /root/someFile

Perintah ini akan menghapus file karena sudo akan meninggikan Anda untuk me-root setiap kali Anda menggunakan perintah sudo sebelum perintah lain. Perintah berikutnya yang Anda jalankan akan dijalankan seperti pengguna normal (kecuali jika Anda menambahkan perintah sudo di awal). Hal ini memungkinkan Anda untuk menyelesaikan tugas administratif dan kemudian meninggalkan hak istimewa segera membantu Anda menghindari kondisi berbahaya.

sudo juga memberikan manfaat lain seperti membatasi rangkaian program yang dapat dijalankan oleh pengguna, perintah log dijalankan di bawah sudo dan hal-hal lain. Singkatnya, info sudo

Ketika Anda melakukan su - atau sudo -i Anda melakukan hal yang sama. Itu menjadi root tetapi perlu diingat bahwa su dan sudo sama sekali berbeda dan memberi Anda alat yang berbeda sebagai admin sistem. Secara pribadi saya TIDAK PERNAH menjalankan su - dan kebijakan pam saya melarangnya , sehingga tidak ada yang menjalankannya. Dalam sistem saya, Anda selalu harus menggunakan sudo karena manfaat tambahan.

Info lebih lanjut: Menggunakan dan mengaktifkan sudo

Termiux
sumber
sujuga dapat menjalankan hanya satu perintah:su -c 'command ...'
Eliah Kagan
Pertanyaannya adalah tentang perbedaan antara sudo -idan sudo su -, bukan antara sudodan su.
Alessio Gaeta