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 中与掩码和模式相关的任何配置。