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
没有抛出任何错误
答案1
如果您的 rsyslogd 由 systemd 启动,那么您的服务定义 /usr/lib/systemd/system/rsyslog.service 可能包含 UMask 限制:
掩码=0066
这会破坏 rsyslogd.conf 中与掩码和模式相关的任何配置。