Ubuntu
Postfix 認為它在只讀文件系統上?
我想對我的 mail.log(Ubuntu 20.04 LTS 上的 postfix 3.2.13)執行一些分析,包括更新無法送達的電子郵件數據庫,所以我編寫了腳本,從通用 /var/log logrotate 腳本中排除了 mail.log 並創建了一個新的 /etc/lorotate.d/mail_log 在 post-rotate 部分執行腳本。雖然腳本被呼叫,但它無法生成 db 文件:
postfix/postmap[540039]: fatal: open /etc/postfix/bad_recipients.db: Read-only file system
考慮到這實際上可能是權限問題,我為 syslog 使用者添加了 sudoers 規則(/var/log/mail 文件歸 syslog 使用者所有)並修改了 logrotate 腳本:
/var/log/mail.log { rotate 30 daily missingok notifempty compress delaycompress sharedscripts postrotate /usr/lib/rsyslog/rsyslog-rotate sudo /usr/local/sbin/mailfail.sh endscript }
但是我仍然在每個 mail.log ( ) 的頂部報告相同的錯誤,
Read-only file system
並且數據庫沒有更新。腳本正在執行表明它不是腳本上的 chroot 或權限或 sudo 錯誤配置問題。正在寫入的其他文件具有 syslog 使用者(擁有日誌文件的使用者)的權限。
Rsyslogd 似乎是鏈中唯一受 apparmor 配置文件約束的執行檔 - 但將路徑 /etc/postfix* (rwk) 添加到配置文件並從強制切換到抱怨對錯誤沒有影響。
(從命令執行腳本按預期工作)
這可能是由 systemd 的保護功能引起的,這些功能為
logrotate
Postfix 啟用。特別是ProtectSystem
,如果設置為“full”或“strict”,將導致/etc
只讀。您應該將任何您希望能夠修改的內容移動到
var
,或者如果您無法避免更改/etc
,請覆蓋相關單位 (systemctl edit
) 以更改ProtectSystem
為“true”,這將保護/usr
但不會/etc
。