Centos
SELinux:pam_systemd(sudo:session):無法連接到系統匯流排:權限被拒絕
在其中一台 CentOS 7 伺服器上,我無法
sudo
從nrpe
使用者執行(Nagios 守護程序遠端監控)。錯誤資訊:
Dec 31 08:28:10 ip-172-31-36-176 sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Dec 31 08:28:10 ip-172-31-36-176 sudo: nrpe : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/check_pm2 -A Dec 31 08:28:10 ip-172-31-36-176 sudo: pam_systemd(sudo:session): Failed to connect to system bus: Permission denied
當然
nrpe
是在sudoers文件中:Defaults:nrpe !requiretty nrpe ALL = (root) NOPASSWD: /usr/local/bin/pm2_check_pm2
/usr/local/bin/pm2_check_pm2的內容:
#!/bin/bash sudo -u pm2 check_pm2 -A
(pm2在這裡是非特權使用者,
sudo check_pm2 -A
有同樣的問題)。
setenforce 0
解決問題。相同的配置在其他伺服器上執行良好。
semanage export
輸出:boolean -D login -D interface -D user -D port -D node -D fcontext -D module -D boolean -m -1 httpd_can_network_connect boolean -m -1 httpd_can_network_memcache boolean -m -1 httpd_can_sendmail boolean -m -1 nagios_run_sudo fcontext -a -f a -t cert_t '/etc/(letsencrypt|certbot)/(live|archive)(/.*)?'
ll -Z /var/run/dbus/system_bus_socket
輸出:srw-rw-rw-. root root system_u:object_r:system_dbusd_var_run_t:s0 /var/run/dbus/system_bus_socket
作業系統:具有最新更新的 CentOS 7.6。重新安裝 selinux* 和 dbus* 沒有幫助。
請指教。
最終使用以下模組程式碼修復:
module nrpe 1.0; require { type mongod_t; type nrpe_t; type proc_net_t; type initrc_var_run_t; type system_dbusd_t; type user_home_t; type user_home_dir_t; type admin_home_t; type systemd_logind_t; type unconfined_t; class capability { dac_override dac_read_search }; class process execmem; class file { read open write lock }; class unix_stream_socket connectto; class dir {open read search}; class sock_file { getattr write }; class dbus send_msg; class unix_stream_socket connectto; } #============= mongod_t ============== allow mongod_t proc_net_t:file { open read }; #============= nrpe_t ============== allow nrpe_t user_home_t:dir search; allow nrpe_t user_home_dir_t:dir search; allow nrpe_t system_dbusd_t:unix_stream_socket connectto; allow nrpe_t initrc_var_run_t:file read; allow nrpe_t self:capability { dac_override dac_read_search }; allow nrpe_t self:process execmem; allow nrpe_t admin_home_t:file { read open }; allow nrpe_t admin_home_t:sock_file { getattr write }; allow nrpe_t initrc_var_run_t:file open; allow nrpe_t system_dbusd_t:dbus send_msg; allow nrpe_t initrc_var_run_t:file lock; allow nrpe_t systemd_logind_t:dbus send_msg; allow nrpe_t user_home_t:file { open read }; allow nrpe_t user_home_t:sock_file { getattr write }; allow systemd_logind_t nrpe_t:dbus send_msg; allow nrpe_t unconfined_t:unix_stream_socket connectto;
在我的設置中,“mongod_t proc_net_t:file”需要在沒有 nrpe 檢查超時的情況下繼續進行,不知道為什麼。