Terakhir kali, saya bertanya tentang risiko ini (di / etc / sudoers):
user_name ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf
%group_name ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf
Ketika saya sedang memikirkan masalah ini, saya menemukan direktori /etc/sudoers.d . File dalam direktori harus memiliki fungsi yang mirip dengan / etc / sudoers (artinya skrip di atas masih bermasalah bahkan di /etc/sudoers.d), dan satu artikel mengatakan kita tidak boleh menggunakan direktori karena kita tidak dapat menggunakan visudo
untuk mengedit file di saya t. Artinya, kita kehilangan hak untuk menggunakan sudo
jika kita membuat kesalahan dalam direktori.
Jika itu benar, mengapa kita memiliki /etc/sudoers.d ? Atau apakah kita memiliki cara yang baik untuk mengedit file di /etc/sudoers.d ?
sudo
gagal'. Saya merusak sudo di RHEL dengan sintaks yang salah dalam file dari /etc/sudoers.d. Ini membutuhkan upaya yang signifikan untuk memperbaiki dan saya pikir rekomendasi harus selalu digunakanvisudo -f
untuk mengedit file-file itu.Ya, Anda dapat menggunakan
visudo
untuk mengedit file-file itu. Yang harus Anda lakukan adalah menentukan nama file yang ingin Anda edit dengan-f
opsi. Sebagai contoh:Atau, jika perlu:
Dokumentasi
Dari
man visudo
:Singkatnya:
Sintaks: Keduanya
visudo
danvisudo -f
melakukan pemeriksaan sintaksis yang sama .Izin / Kepemilikan: Sebagai fitur yang ditambahkan untuk membantu administrasi sistem besar , file yang diedit di bawah
visudo -f
tidak diperiksa untuk kepemilikan atau izin: ini memungkinkan pemeriksaan sintaksis terhadap file secara offline atau sebagai bagian dari sistem kontrol revisi.Mengapa menggunakan
/etc/sudoers.d/
Biasanya di
/etc/sudoers
bawah kendali manajer paket distribusi Anda. Jika Anda telah membuat perubahan pada file itu dan manajer paket ingin memutakhirkannya, Anda harus memeriksa perubahan secara manual dan menyetujui bagaimana mereka digabungkan ke dalam versi baru. Dengan menempatkan perubahan lokal Anda ke file di/etc/sudoers.d/
direktori, Anda menghindari langkah manual ini dan peningkatan dapat dilanjutkan secara otomatis.Kapan
sudo
mengabaikan file/etc/sudoers
?Jika
/etc/sudoers
file Anda berisi baris:maka
sudo
akan membaca file di direktori/etc/sudoers.d
.Pengecualian adalah:
~
.
karakterIni dilakukan (a) untuk kenyamanan manajer paket dan juga (b) sehingga file cadangan dari editor diabaikan.
sumber
visudo -f
aman?visudo -f
pengeditan dengan cara yang aman seperti biasavisudo
. Itu sebabnya kami memilikivisudo
dan mengapa itu memberikan-f
opsi.-f
karena ini dapat byte seseorang yang kemudian menyalinnya ke /etc/sudoers.d/ tanpa mengeceknya./etc/sudoers.d/mysudorules.sudo
dan tidak bisa seumur hidup saya mencari tahu mengapa aturan di dalamnya tidak diterapkan sebelum membaca jawaban Anda./sudoers.d/mysite.co.uk
tidak berfungsi dan setelah mengubah nama menjadimysite
berfungsi! :)Karena alat otomatis lebih mudah (seperti Chef atau Puppet) untuk memasukkan file individual ke direktori ini, daripada membuat perubahan
/etc/sudoers
, yang mungkin rapuh.File-file yang ada di
/etc/sudoers.d
(dalam efek) digabungkan. Anda akan melihat beberapa contoh lain dari pola ini/etc
, seperti/etc/cron.d
dan/etc/logrotate.d
.sumber
Manfaat lain menggunakan
visudo -f
seperti yang disebutkan dalam beberapa jawaban adalah ada opsi yang sesuai-c
atau--check
yang memverifikasi Anda tidak memiliki informasi yang tidak valid dalam file sudoers.d atau file lain yang mungkin ingin Anda masukkan ke sudoers.d. Ini SANGAT berguna dalam kasus yang disebutkan dengan alat otomatis, karena Anda dapat menjalankan misIni diam-diam memeriksa file (tidak ada output karena -q) dan hanya jika itu TIDAK mengembalikan kesalahan (keluar 1 berarti file sudoers tidak valid) maka itu akan menyalin file ke sudoers.d, dengan cara ini Anda dapat membuat file dan kerjakan tanpa harus memperbaikinya pertama kali (menggunakan
sudo visudo -f /etc/sudoers.d/myfile
harus berhasil atau membuang konten jika Anda tidak memperbaikinya).Juga, kata hati - hati tentang pernyataan ini dari jawaban lain.
File dalam /etc/sudoers.d harus mematuhi sintaksis yang sama dengan / etc / sudoers, karena di bawah sampul sistem hanya menyatukan semua file dengan yang terakhir di "menang" jika ada beberapa entri untuk hal yang sama pengaturan tunggal.
Jika izinnya sangat salah (dapat ditulis dunia) pada file di /etc/sudoers.d/ maka diabaikan, ini mungkin yang menyebabkan file yang tidak valid diabaikan, jika tidak, Anda dapat dengan serius melanggar
sudo
perintah dengan memiliki sudoers yang tidak valid. d file dengan izin yang benar.Anda dapat mengizinkan file sudoers agar dapat dibaca dunia, jika Anda secara tidak sengaja mengizinkan 'lain' izin menulis yang Anda butuhkan untuk sudo sebagai pengguna lain atau dari terminal root menjalankan perintah ini. Ini juga dapat rusak jika file tersebut dimiliki oleh orang lain selain root: root.
Saya baru saja mengkonfirmasi bahwa jika saya menjalankan
chmod o+w /etc/sudoers.d/vagrant
saya tidak lagi dapat sudo sebagai pengguna gelandangan, itu meminta saya untuk kata sandi saya dan kemudian gagal.Ketika saya berlari
sudo -l
untuk melihat izin perintah yang diterapkan sebagai pengguna sudo lain yang valid, saya juga menerima peringatan tentang izin file. Ini adalah perintah yang sama yang saya gunakan untuk mengkonfirmasi bahwa pengguna 'gelandangan' kehilangan sudo ketika saya menerapkano+w
izin ke file yang memberikan izin sudo pengguna.sumber
Hanya tambahan singkat untuk jawaban umum ... tidak ada jawaban lain yang memperbaiki masalah saya, yang mana urutannya penting.
Jika baris Anda berfungsi dalam sudoers tetapi bukan sudoers.d, coba pindahkan #include, atau ubah urutan file sudoers.d Anda (dengan awalan dengan angka). Tampaknya hal yang paling spesifik harus menjadi yang pertama dalam file.
Saya punya sesuatu seperti:
Dan yang ke-2 tidak berpengaruh karena yang pertama sudah cocok. NOPASSWD bukanlah suatu kondisi, tetapi beberapa cara untuk memodifikasi tindakan.
Dan itu tidak jelas karena itu tidak ada dalam satu file, karena direktori sudoers.d.
sumber