事件起因:如下
1、在服務器上root用戶,會定期生成一個文件,到/tmp目錄,如:qq_5201351.txt,給other加上了r讀取
2、zabbix端會周期性取這台服務器/tmp/qq_5201351.txt文件內容的(只能通過agent方式,system.run[cat /tmp/qq_5201351.txt]方式獲取)
但是zabbix的web界面的返回結果異常,報錯:cat: /tmp/qq_5201351.txt: Permission denied
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
冷靜分析:到底是沒有權限執行cat命令,還是文件的權限不夠(公司服務器都做過很強的安全加固)
排查過程:如下
1、查看文件的權限,結果為-rw-r--r-- ,按理說其他用戶就應該有讀的權限,查檢facl 也沒有問題
2、將上面的cat命令替換成ls或者stat,都能夠返回有結果,難道是命令的問題,倒也有可能?
a、將cat命令,寫成絕對路徑,/bin/cat 【還是報錯】
b、查看/bin/cat對於zabbix用戶是否有執行權限 【有權限】
c、查看cat文件是否設置有facl 【沒有設置facl】
[root@qq5201351 ~]# getfacl /bin/cat getfacl: Removing leading '/' from absolute path names # file: bin/cat # owner: root # group: root user::rwx group::r-x other::r-x
d、對比stat命令與cat命令的selinux相關的Context信息(權限與Context信息都是一樣的):
[root@qq5201351 ~]# ls -lZ /bin/stat -rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/stat [root@qq5201351 ~]# ls -lZ /bin/cat -rwxr-xr-x. root root system_u:object_r:bin_t:s0 /bin/cat [root@qq5201351 ~]#
3、到此基本斷定問題還是出在文件的可能性較大,由於公司服務器是做過非常嚴格的安全加固,zabbix用戶沒有家目錄,shell也還是/sbin/nologin
開始想要su到zabbix分析,但非常困難(非技術困難,困於流程和安全審計),於是最后分析qq_5201351.txt的selinux安全上下文信息:
[root@qq5201351 ~]# ls -lZ /tmp/qq_5201351.txt -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/qq_5201351.txt
4、到此筆者能想到的也就只有是selinux的安全上下文配置了,於是思考去找一個zabbix用戶絕對有權限的文件呢?
這里筆者想到通過查看進程,能否找到zabbix用戶進程用到的配置文件,居然還真能找到一個,如下:
[root@qq5201351 ~]# ps -ef|grep ^zabbix zabbix 986 1 0 May18 ? 00:00:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
5、然后將zabbix命令改成system.run[cat /etc/zabbix/zabbix_agentd.conf] ,以文本方式取值,果然如猜想的那樣,成功取得文件內容
6、最后對比/etc/zabbix/zabbix_agentd.conf與/tmp/qq_5201351.txt文件Context配置的差異,如下
[root@qq5201351 ~]# ls -lZ /etc/zabbix/zabbix_agentd.conf -rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/zabbix/zabbix_agentd.conf [root@qq5201351 ~]# [root@qq5201351 ~]# ls -lZ /tmp/qq_5201351.txt -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/qq_5201351.txt
說明:這里selinux的Context其實分為了4段,用戶信息,角色信息、類型信息、范圍信息,通過對比分析,加上測試,最終發現是類型信息影響了
於是,將qq_5201351.txt的類型信息部分,也修改為etc_t 問題得到解決,修改配置的命令如下:
chcon -t etc_t /tmp/qq_5201351.txt
補充一點:修改用戶信息(-u, --user=xx),角色信息(-r, --role=xx),范圍信息(-l, --range=xx),修改類型也可以--type=xx
尊重別人的勞動成果 轉載請務必注明出處:https://www.cnblogs.com/5201351/p/13720110.html