Centos7

SELinux 在 CentOS 7 上的 Anacron postrotate 腳本中使用時拒絕“systemctl kill”

  • November 19, 2017

我正在使用名為 UrBackup 的備份軟體,我已將其配置為每天通過 cron.daily 輪換其日誌一次。日誌輪換後,軟體使用 postrotate 腳本向正在執行的程序發送帶有“systemctl kill”的 HUP 信號。但是,SELinux 否認了這個操作,我不知道如何修復它。

這是來自 /etc/logrotate.d 的 UrBackup 的整個 logrotate 配置文件:

"/var/log/urbackup.log" {
       daily
       rotate 30
       missingok
       create 640 urbackup urbackup
       compress
       postrotate
               test -e /var/run/urbackupsrv.pid && kill -HUP 'cat /var/run/urbackupsrv.pid' || /bin/systemctl kill -s HUP urbackup-server.service
       endscript
}

正如我所發現的,系統上正在執行以下有問題的 postrotate 腳本:

/bin/systemctl kill -s HUP urbackup-server.service

SELinux 阻止了這一點。以下是來自 /var/log/messages 的相關日誌條目:

Nov 14 03:33:33 backup4 kernel: type=1107 audit(1510648413.518:4407695): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc:  denied  { stop } for auid=0 uid=0 gid=0 path="/usr/lib/systemd/system/urbackup-server.service" cmdline="/bin/systemctl kill -s HUP urbackup-server.service" scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:systemd_unit_file_t:s0 tclass=service#012 exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'

Nov 14 03:33:33 backup4 logrotate: ALERT exited abnormally with [1]

因為 HUP 信號沒有發送到服務,所以它不知道日誌文件已經被輪換,並且它繼續無限期地寫入舊的(輪換的)日誌。

我嘗試使用 sealert 實用程序對此進行故障排除,以解釋 /var/log/audit/audit.log 中的所有錯誤。但是,即使日誌條目出現在 audit.log 中,它似乎也忽略了此錯誤。

我還嘗試以 root 身份互動執行“systemctl kill”命令。它完成沒有任何錯誤。手動執行 logrotate 也是如此:

logrotate -f /etc/logrotate.d/urbackup-server

該命令也可以正常執行。我唯一一次看到 SELinux 拒絕是在日常 Anacron 程序觸發 logrotate 時。

SELinux明確不允許“systemctl kill”命令嗎?如果是這樣,為什麼我可以互動執行它,但不能通過 cron 啟動?有什麼方法可以為這種情況添加異常,或者我可以通過其他方式將 HUP 信號發送到程序,以便它將寫入正確的日誌文件?

非常感謝您提供的任何幫助。

具體來說, contextlogrotate_t是不允許systemd_unit_file_t的。您對它的互動式執行是在不同的上下文中。

好奇它通過了pid文件測試。如果該 pid 文件在服務執行時不存在,請嘗試添加PIDFile=/var/run/urbackupsrv.pid到該urbackup-server.service單元。

在 SELinux 中有很多方法可以定義域轉換,但首先要嘗試使用 pid 文件。

引用自:https://serverfault.com/questions/883912