Mengapa kita perlu menggunakan visudo daripada langsung memodifikasi file sudoers?

83

Saya mengerti bahwa jika Anda ingin memodifikasi siapa yang dapat menggunakan sudodan apa yang dapat mereka lakukan dengannya, Anda harus menggunakannya visudo. Saya tahu saya tidak seharusnya langsung memodifikasi file / etc / sudoers.

Apa yang bisa visudodilakukan untuk memodifikasi file secara langsung? Apa yang salah?

Alasan
sumber

Jawaban:

104

visudomemeriksa sintaks file sebelum benar-benar menimpa sudoersfile.

Jika Anda menggunakan editor biasa, mengacaukan sintaks, dan menyimpan ... sudoakan (mungkin) berhenti bekerja, dan, karena /etc/sudoershanya dapat dimodifikasi oleh root, Anda terjebak (kecuali Anda memiliki cara lain untuk mendapatkan root).

Selain itu memastikan bahwa pengeditan akan menjadi satu operasi atom. Penguncian ini penting jika Anda perlu memastikan tidak ada orang lain yang dapat mengacaukan perubahan konfigurasi yang Anda pertimbangkan. Untuk mengedit file lain sebagai root selain /etc/sudoersada sudoeditperintah yang juga menjaga terhadap konflik pengeditan tersebut.

Tikar
sumber
3
Wow, tidak pernah tahu tentang sudoedit. Itu tidak berfungsi pada OS X jadi saya menganggap itu alat GNU? Bagaimanapun, info keren di sini. Saya selalu mengedit secara manual dan tidak pernah memiliki masalah - Saya mengerti sekarang bahwa itu hanya keberuntungan dan alat ini dapat membantu mencegah bencana. Terima kasih!
Harv
2
@ Harv. Tidak ada GNU sudodan OS X memang memiliki alat GNU. Karena sudo pertama kali dibuat sebagai aplikasi open source, mungkin tidak ada alasan untuk banyak implementasinya. sudodan sudoeditperintah yang sama, sudoberperilaku seperti sudo -esaat dipanggil sudoedit. Saya percaya hanya bahwa OS X lupa untuk menambahkan sudoedit -> sudotautan, tetapi Anda harus tetap dapat menggunakan sudo -eatau menelepon sudodengan argv [0] yang diatur sudoedituntuk mendapatkan perilaku yang sama.
Stéphane Chazelas
Menariknya, visudomenggunakan nano secara default.
Tim
3
@Tim: Default "real" adalah vi, tetapi dapat dikonfigurasi untuk menggunakan sesuatu yang lain. Jadi nano memang bisa menjadi default pada distro / setup Anda. Lihat halaman manual .
Mat
2
@ AngularInDepth.com, konsekuensinya cukup jelas. Jika Anda menyimpan file sudoers yang tidak valid, maka sistem tidak akan dapat menguraikannya. Jadi jika saya melakukan sudo vim /etc/sudoersdan merusak sintaks, maka saya tidak akan dapat sudo vim /etc/sudoersmemperbaikinya lagi. Secara efektif, semua kemampuan untuk meningkatkan hak istimewa melalui sudo akan hilang karena sistem tidak akan dapat mengurai file.
Spencer D
23

Dari halaman manual visudo:

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.

Periksa juga jawaban ini dari kesalahan server .

amyassin
sumber