Saya menemukan pertanyaan ini saat mencari sesuatu yang sama sekali tidak berhubungan, tetapi saya pikir saya akan menambahkan perbedaan penting berikut, yang sejauh ini belum disebutkan sama sekali:sudoedit tidak menjalankan editor Anda sebagai root.
$ sudo vim /etc/farts.conf
Hanya akan menjalankan vim sebagai root, memungkinkannya untuk membaca file. Sisi negatifnya adalah editor sekarang juga berjalan sebagai root dan dapat melakukan apa saja. Jika Anda hanya ingin mengizinkan pengguna untuk mengedit file konfigurasi dan tidak ada yang lain, sayang sekali, Anda hanya memberi mereka root pada keseluruhan sistem. Tidak ada yang menghalangi saya untuk menelurkan shell dari vim dengan :sh
atau :!command
, dan karena mereka adalah sub proses, mereka juga akan berjalan sebagai root.
Di sisi lain:
$ sudoedit /etc/farts.conf
benar-benar akan beroperasi secara berbeda. Itu akan membuat salinan dengan nama unik di /tmp dengan izin dikunci hanya untuk pengguna Anda, dan kemudian menelurkan editor Anda secara normal, tanpa hak akses root, pada salinan itu.
Setelah Anda keluar dari editor, itu akan membandingkan file sementara dan file asli, dan dengan aman mengganti yang asli dengan hasil edit Anda jika diubah.
Dalam skenario ini, memungkinkan pengguna untuk mengedit file sistem, tetapi tidak mengizinkan mereka untuk menjalankan biner acak sebagai root atau poke di mana saja pada sistem file.
Itu terutama perbedaan sebenarnya, sisanya yang telah disebutkan hanyalah efek samping yang rapi.
Pertama-tama, sudo vim
sudah secara eksplisit menyebutkan editor default Anda, yang tidak diperlukan jika Anda telah mendefinisikannya di $EDITOR
. sudoedit
menghindarkan Anda dari mendefinisikan editor setiap kali Anda ingin mengedit sesuatu—dan pada sistem multipengguna memungkinkan setiap orang untuk menggunakan editor yang mereka sukai secara pribadi.
Bagaimana? Pertimbangkan sistem di mana pengguna normal hanya mendapatkan sudo
hak istimewa untuk mengedit file tertentu. Mereka dilarang menjalankan sudo
dengan hal lain sekalipun. Anda harus mengizinkan mereka untuk sudo vi
dan sudo vim
dan sudo nano
dan sudo emacs
dan sudo pico
(dll). Daripada harus melakukan itu, Anda cukup mengizinkan mereka untuk sudoedit
file, dengan pilihan pengaturan $EDITOR
untuk apa pun yang mereka suka. (Bayangkan Anda akan memaksa pecinta Emacs untuk menggunakan Vim…)
Masalah lainnya adalah jika $EDITOR
Anda disetel ke vim
, dan Anda memiliki setelan penyesuaian untuk itu di .vimrc
pengguna Anda , setelan tersebut tidak akan digunakan jika Anda menggunakan sudo vim
atau sudo $EDITOR
. sudoedit
namun mempertahankan lingkungan pengguna panggilan, dan juga pengaturan Anda.
Lihat juga:Apa hebatnya sudoedit?