我试图使用syslog与输出通道一起创建一些日志文件,并且需要它们具有特定的所有者和权限
在/etc/rsyslog中,我正在编写以下内容:
$umask 0027
$FileGroup the-mothers-of-invention
$outchannel rotate1,/path/mylog.log, 10000000,/path/my-rotate-script.sh /path mylog 99 .log 10000000
$template myTemplate,"%timegenerated:1:23:date-rfc3339%+%timegenerated:28:36:date-rfc3339% %syslogpriority-text:1:2:uppercase%hostname%:%msg%\n"
if $app-name == 'MYAPP' then {
*.* :omfile:$rotate1;myTemplate
stop
}使用此配置,我看到第一个mylog.log文件是通过权限640创建的,groupID是发明之母,但是在到达10 mv之后,脚本被正确执行(我使用mv命令),文件mylog__.log被创建,它继承原始mylog.log文件(到目前为止,一切正常)的所有者和权限,但是,当syslog自动创建新的mylog.log文件时,它用默认所有者(root:root)和权限(644)创建。
我已经阅读了很多信息&手册( rsyslog ),但是我没有看到任何关于合并权限更改和输出通道的信息。
有猜到吗?
谢谢!
发布于 2022-03-11 10:29:22
$FileCreateMode参数允许指定创建模式,用它来创建新文件。它只允许rsyslog为其运行的用户创建具有读写权限的文件。
首先,取消对rsyslog的任何限制:
$umask 0000然后可以设置创建模式:
$FileCreateMode 0600
*.* /var/log/file-with-0600
$FileCreateMode 0644
*.* /var/log/file-with-0644如果有一个侦听器必须绑定到1024下面的网络端口,则rsyslogd总是需要以根用户身份启动。例如,UDP侦听器通常需要侦听514,因此rsyslogd需要作为root启动。
这意味着,如果您有上面描述的任何侦听器,您就不能更改文件所有者--至少如果您要用rsyslog创建一个文件。
如果不是这样的话,您可以使用$PrivDropToGroup和/或$PrivDropToUser配置参数来指定一个组和/或用户,rsyslogd在初始化后应该将这些组和/或用户放到其中。
# These may require root privilege
$FileOwner syslog
$FileGroup adm
$PrivDropToUser syslog
$PrivDropToGroup syslog发布于 2022-03-14 18:08:09
正如eDonkey所说,由于我没有使用任何UDP侦听器,所以在实例化outChannel之前包括了FileGroup和PrivDropToGroup,如下所示:
$umask 0000
$outchannel rotate1,/path/mylog.log, 10000000,/path/my-rotate-script.sh /path mylog 99 .log 10000000
$template myTemplate,"%timegenerated:1:23:date-rfc3339%+%timegenerated:28:36:date-rfc3339% %syslogpriority-text:1:2:uppercase%hostname%:%msg%\n"
if $app-name == 'MYAPP' then {
$FileCreateMode 0640
$FileGroup the-mothers-of-invention
$PrivDropToGroup the-mothers-of-invention
*.* :omfile:$rotate1;myTemplate
stop
}非常感谢!
https://stackoverflow.com/questions/71409268
复制相似问题