Tôi đang thiết lập Nagios trên một số máy chủ Linux của mình và gặp phải một số vấn đề. Các check_ide_smart
Plugin yêu cầu truy cập root vào hệ thống để chạy. Để chạy nó, tôi sử dụng check_by_ssh
plugin để ssh vào tài khoản nagios trên máy chủ từ xa, sau đó chạy check_ide_smart
bằng sudo.
Ban đầu tôi đã thêm các dòng sau /etc/sudoers
để cho phép chương trình hoạt động:
nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart
Mặc dù điều này chỉ hoạt động tốt khi chạy cục bộ, tôi đã gặp sự cố khi nó được chạy từ Nagios: không có TTY nào được sinh ra, điều đó ngăn cản plugin hoạt động.
Tôi đã đào trang man cho sudo và tìm thấy tùy chọn -s, nó sinh ra một shell và thực thi chương trình trong đó. Khi tôi thử sử dụng sudo -s
, tôi gặp phải các vấn đề về quyền vì -s rõ ràng thay đổi lệnh thành /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart
, không được cho phép bởi tệp sudoers. Tôi đã thử thay đổi tệp sudoers để sử dụng lệnh đó, nhưng nó không hoạt động và sử dụng dấu ngoặc kép là một lỗi cú pháp.
Cuối cùng tôi đã làm cho nó hoạt động bằng cách sử dụng dòng sau trong /etc/sudoers
:
nagios ALL=/bin/bash
Điều này cảm thấy thực sự sai đối với tôi vì tôi cho phép người dùng nagios sinh ra một vỏ gốc, mà họ có thể làm bất cứ điều gì.
Tại thời điểm này, tôi nghĩ rằng có lẽ, bằng cách đặt lệnh trong tập lệnh shell mà người dùng nagios có các đặc quyền chỉ đọc sẽ hoạt động, vì vậy tôi đã tạo một tập lệnh shell:
#!/bin/sh
/bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@
Thật không may, tôi không bao giờ có thể làm cho các tham số đã truyền ( Chỉnh sửa: Tôi cần trích dẫn $@
) hoạt động chính xác với plugin, vì vậy tôi không biết liệu nó có hoạt động không. $@
để nó hoạt động. Cảm ơn @derobert và @pjz. Tôi vẫn không biết liệu nó có hoạt động hay không vì tôi đã làm cho nó hoạt động bằng giải pháp của @Mike Arthur.
Có cách nào để tôi có thể sudo -s
làm việc trong khi không cho phép sinh sản vỏ gốc không?
Câu trả lời:
Đã thêm dòng sau vào /etc/sudoers
:
nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart *
Lưu ý dấu hoa thị; không có nó, nó không hoạt động. Cảm ơn @Mike Arthur đã trả lời.