Mengapa saya harus mengedit / etc / sudoers dengan visudo?

51

Saya perhatikan bahwa file sudoers dan file konfigurasi cron bertindak dengan cara khusus dibandingkan dengan file konfigurasi lainnya di Linux. Mereka perlu diedit dengan pembungkus khusus daripada editor teks apa pun. Kenapa ini?

Brian Lyttle
sumber

Jawaban:

71

Anda menggunakan visudo sebagian besar untuk mencegah dari kerusakan sistem Anda. Visudo menjalankan pemeriksaan pada perubahan Anda untuk memastikan Anda tidak mengacaukan apa pun. Jika Anda memang mengacaukan sesuatu, Anda benar-benar dapat merusak kemampuan Anda untuk memperbaikinya atau melakukan apa pun yang membutuhkan hak istimewa tanpa me-reboot ke mode penyelamatan.

Halaman manual menjelaskan hal ini .

visudo mengedit file sudoers dengan cara yang aman, analog dengan vipw (8). visudo mengunci file sudoers terhadap beberapa pengeditan simultan, menyediakan pemeriksaan kewarasan dasar, dan memeriksa kesalahan parse. Jika file sudoers saat ini sedang diedit, Anda akan menerima pesan untuk mencoba lagi nanti.

Sakit kepala
sumber
3
Menarik! +1, untuk mengilustrasikan penjelasan sederhana untuk sesuatu yang seharusnya saya ketahui sejak lama :)
Greg Meehan
7
Perilaku visudo tersedia secara umum sebagai perintah yang disebut sudoedit. Ini melakukan siklus kunci / salin / edit / salin / buka kunci yang sama (meskipun jelas tidak dengan langkah parse). Satu kelebihan yang dimiliki adalah ini memungkinkan Anda memberi orang-orang akses sudo untuk mengedit file yang dimiliki root tanpa meluncurkan editor sebagai root, yang memungkinkan mereka meluncurkan shell dari dalam editor. Jika saya keluar dari editor saya saat menjalankan sudoedit, euid saya masih milik saya sendiri.
James F
18

Jawaban Zoredache sempurna.

Satu hal lagi yang layak untuk disebutkan. Anda dapat menggunakan editor favorit Anda dengan mengatur EDITORatau VISUAL:

export EDITOR=whatevertexteditoryouwant
export VISUAL=whatevertexteditoryouwant

Atau:

EDITOR=whatevertexteditoryouwant visudo
cstamas
sumber
Jika Anda melakukannya, itu masih akan melakukan langkah pemeriksaan sintaks, atau itu akan setara dengan memanggil sudoedit seperti yang disarankan @James F?
o0 '.
Ya adalah jawaban untuk pertanyaan Anda. Anda dapat menggunakan hampir semua editor yang dapat Anda gunakan dari cli.
cstamas
3
Itu bukan pertanyaan ya atau tidak: V
o0 '.
5
Ini akan melakukan pemeriksaan sintaks.
cstamas