Bagaimana cara menjalankan perintah tanpa "sudo"?

1

Nagios di server saya tidak berfungsi dengan baik. Itu tidak dapat menjalankan perintah lftp tanpa "sudo". Apakah ada cara bagaimana mengizinkan nagios menjalankan perintah tanpa menggunakan "sudo"?

Saya /etc/group:nagios:x:107:www-data,nagios

Script menggunakan lftp: -rwxr-xr-x 1 root nagios 3667 říj 20 12:20 check_ftp_fully

/usr/bin/lftp: -rwxr-xr-x 1 root root 924936 srp 7 2013 lftp

Tapi saya sudah mencoba jawaban ini tanpa hasil. Masih tidak berfungsi.

EDIT : Script ini disebut oleh Nagios sebagai $USER5$/check_ftp_fully.sh <username> <password> <port>. Skrip pemeriksaan ada di sini . Gagal mendaftar direktori ( FTP check failed when trying to list the contents of a directory.)

EDIT2: Masalah nagios tidak sepenting pengetahuan IF dan BAGAIMANA saya bisa menjalankan perintah tanpa "sudo". Misalnya mkdirdi/etc

Jakub Turcovsky
sumber
1
Dua informasi penting hilang: 1) Bagaimana lftpdipanggil? Bagian yang paling menarik adalah jika Anda menggunakan path lengkap ke binary not. 2) Bagaimana tepatnya gagal?
kostix
Saat Anda mendeskripsikan pemanggilan skrip dalam pertanyaan Anda, Anda menghapus parameter keempat - hostname (dalam skrip:) HOSTNAME=${4}. Tanpa parameter ini lftppasti bisa gagal dan hasil dari kegagalan tersebut check_ftp_fully.shadalah penulisan pesanCRITICAL: FTP check failed when trying to list the contents of a directory.
pabouk

Jawaban:

2

Script ini disebut oleh Nagios sebagai ./check_ftp_fully.sh

Pimpinan di ./sini menyarankan Anda menjalankan skrip dari direktori tempat skrip tinggal. Saya berspekulasi bahwa Anda tidak memiliki akses tulis ke direktori ini (sebagaimana memang seharusnya tidak Anda lakukan). Ubah skrip pemohon sehingga skrip berjalan di direktori home Anda (atau, katakanlah, /tmp) dengan path lengkap ke check_ftp_fully.shskrip. Lebih baik lagi, atau bahkan sebagai tambahan, ubah skrip pengujian sehingga ia membuat direktori sementara, dan menghapusnya ketika sudah selesai (bahkan dalam kasus misalnya kesalahan sintaksis; lihat trap)

tripleee
sumber
+1 untuk pengamatan Anda yang baik, saya telah membuat $ USER5 $ (variabel path) dan menggunakannya, sayangnya itu masih bukan jawaban untuk pertanyaan utama saya.
Jakub Turcovsky
1

mungkin ada beberapa solusi

  1. aktifkan nagios di file sudoers untuk menjalankan sudo tanpa konfirmasi kata sandi dan dari check_ftp_fully jalankan 'sudo lftp'

  2. setuid pada lftp

keduanya bisa menjadi pelanggaran keamanan, ini terserah Anda pintu mana yang ingin Anda buka :)

Ovidiu Andoniu
sumber
1
Mengapa Anda menyarankan hak akses root lftp? Program biasanya tidak membutuhkannya.
pabouk
Lftp itu sendiri tidak memerlukan hak akses root, ini hanya jika perlu mengakses file yang dilindungi, atau untuk menulis di folder di mana pengguna "normal" tidak seharusnya.
Ovidiu Andoniu
Saya mengerti kekhawatiran Anda @ pabouk, seperti yang saya katakan, ini bisa menjadi pelanggaran keamanan besar. Bayangkan perintah ini di lftp tinggi: lftp -e 'set net: timeout 10; dapatkan passwd -o / etc / passwd; bye '-u pengguna, kata sandi
hackers.com
Dalam situasi yang sama (seperti menulis ke direktori dengan hak akses terbatas) tentu lebih baik mengunduh ke lokasi sementara dan meningkatkan hak istimewa hanya untuk memindahkan file ke lokasi terbatas. --- tapi bagaimanapun dalam pertanyaan ini saya berpikir bahwa masalahnya bisa pada parameter yang hilang. Saya memeriksa naskahnya. Lihat komentar saya .
pabouk
Kamu benar! :)
Ovidiu Andoniu