Jawaban:
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.
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
su
juga dapat menjalankan hanya satu perintah:su -c 'command ...'
sudo -i
dan sudo su -
, bukan antara sudo
dan su
.
sudo su -
ada gunanya?