Saya mengatur Nagios di beberapa server Linux saya dan telah mengalami sedikit masalah. The check_ide_smart
Plugin membutuhkan akses root ke sistem untuk menjalankan. Untuk menjalankannya, saya menggunakan check_by_ssh
plugin untuk ssh ke akun nagios pada host jarak jauh, kemudian jalankan check_ide_smart
menggunakan sudo.
Saya awalnya menambahkan baris berikut /etc/sudoers
untuk memungkinkan program bekerja:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Sementara ini bekerja dengan baik ketika dijalankan secara lokal, saya mendapatkan masalah ketika dijalankan dari Nagios: tidak ada TTY yang muncul, yang mencegah plugin bekerja.
Saya menggali halaman manual untuk sudo dan menemukan opsi -s, yang memunculkan shell dan menjalankan program di sana. Ketika saya mencoba menggunakan sudo -s
, saya mengalami masalah izin karena -s tampaknya mengubah perintah menjadi /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, yang tidak diizinkan oleh file sudoers. Saya mencoba mengubah file sudoers untuk menggunakan perintah itu, tetapi itu tidak berhasil, dan menggunakan tanda kutip adalah kesalahan sintaksis.
Saya akhirnya membuatnya bekerja dengan menggunakan baris berikut di /etc/sudoers
:
nagios ALL=/bin/bash
Ini terasa sangat salah bagi saya karena saya mengizinkan pengguna nagio untuk menelurkan shell root, yang dengannya mereka dapat melakukan apa saja.
Pada titik ini, saya pikir itu mungkin, dengan menempatkan perintah di skrip shell yang hak pengguna baca-nagi telah aktifkan, jadi saya membuat skrip shell:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
Sayangnya, saya tidak pernah bisa mendapatkan parameter yang lulus ( Sunting: Saya perlu mengutip $@
) berfungsi dengan benar dengan plugin, jadi saya tidak tahu apakah ini akan berhasil. $@
agar bisa berfungsi. Terima kasih @derobert dan @pjz. Saya masih tidak tahu apakah itu akan berhasil karena saya berhasil menggunakan solusi @ Mike Arthur.
Apakah ada cara agar saya bisa mulai sudo -s
bekerja tanpa membiarkan pemijahan shell root?
Menjawab:
Menambahkan baris berikut ke /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Perhatikan tanda bintang yang tertinggal; tanpanya, ini tidak akan berhasil. Terima kasih @ Mike Arthur untuk jawabannya.