Rhel
為什麼在 /var/log/messages 中會報告 SELinux 問題?
我發現了一個關於 logrotate 的 SELinux 問題。我只是想知道為什麼它是在 中報告的
/var/log/messages
,而不是在/var/log/audit/audit.log
. 我假設任何 SELinux 問題都會記錄到 audit.log 中。誰能解釋原因?我在 RHEL 8 系統上遇到了這種行為。在消息中找到條目:
Nov 22 03:23:14 itsrv2489 setroubleshoot[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6. For complete SELinux messages run: sealert -l 2c99b2ca-3bf0-486d-b1c3-54bc6e87105e Nov 22 03:23:14 itsrv2489 platform-python[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6.#012#012***** Plugin catchall (100. confidence) suggests **************************#012#012If you believe that logrotate should be allowed read access on the g6 directory by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c 'logrotate' --raw | audit2allow -M my-logrotate#012# semodule -X 300 -i my-logrotate.pp#012
上面的這兩行由我格式化:
Nov 22 03:23:14 itsrv2489 setroubleshoot[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6. For complete SELinux messages run: sealert -l 2c99b2ca-3bf0-486d-b1c3-54bc6e87105e Nov 22 03:23:14 itsrv2489 platform-python[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6. ***** Plugin catchall (100. confidence) suggests ************************** If you believe that logrotate should be allowed read access on the g6 directory by default. Then you should report this as a bug. You can generate a local policy module to allow this access. allow this access for now by executing: # ausearch -c 'logrotate' --raw | audit2allow -M my-logrotate # semodule -X 300 -i my-logrotate.pp
通常我會在
/var/log/audit/audit.log
.**更新:**最後我發現,audit.log 是自己輪換的,因為它非常大,所以刪除了一些記錄。這就是我在那些審計日誌文件中找不到關鍵字“logrotate”的原因。我修改
/etc/audit/auditd.conf
為禁用輪換,第二天我能夠在 audit.log 中找到“logrotate”(由 cron 作業觸發,每天一次)。
audit.log
確實會收到原始的 SELinux 拒絕消息,這是真的。但是您正在查看的消息並不是由 SELinux 本身直接生成的。相反,它們是由
setroubleshoot
一個 Python 工具記錄的,它對 SELinux 審計日誌消息進行後處理,並提供對它們的更易讀、更高級別的解釋。審計日誌只專用於審計子系統:因為
setroubleshoot
它不是審計子系統的實際部分,它需要在別處記錄其消息。所以它/var/log/messages
改為登錄。