Centos7

rsyslog沒有設置group和everyone的讀寫權限

  • July 28, 2020

Rsyslog 忽略使用 fileCreateMode 為組和每個人設置的讀寫權限。

我已經設置了一個服務來執行我的節點應用程序:

...
[Service]
WorkingDirectory=/opt/demo/app
User=appuser
Type=simple
ExecStart=/usr/bin/node myapp.js demo
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp
...

然後我像這樣在 /etc/rsyslog.d/ 中設置一個 myapp.conf 文件

if ($programname == 'myapp') then {
   action(
       type="omfile"
       File="/opt/demo/app/app.log"
       fileCreateMode="0640"
       fileOwner="appuser"
       fileGroup="mygroup"
   )
   stop
}

使用正確的使用者和組創建日誌文件,但權限為 0600 而不是 0640。

如果我將 fileCreateMode 更改為 0777,則該文件將使用 0711 創建。

我使用的是預設的 rsyslog.conf,rsyslog 版本是 8.24.0-41,作業系統是 CentOS 7.7

rsyslogd -N 1不會拋出任何錯誤

如果您的 rsyslogd 是由 systemd 啟動的,那麼您的服務定義 /usr/lib/systemd/system/rsyslog.service 可能包含 UMask 限制:

遮罩=0066

這會破壞 rsyslogd.conf 中與遮罩和模式相關的任何配置。

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