rsyslog 更改文件所有者

rsyslog 更改文件所有者

我正在尝试将日志的所有者和组更改为与 rsyslog.conf 不同的用户,其内容如下:

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

我在 /etc/rsyslog.d/99-custom.conf 中有一个自定义 .conf 文件,其中包括:

#Set the ownership to xxxxx
#$FileOwner xxxxx

# Send datastore logs to separate file

if $programname == 'datastore' then {
    action(
        type="omfile"
        FileCreateMode="0644"
        FileGroup="xxxxx"
        FileOwner="xxxxx"
        File="/var/log/folder/datastore.log"
    )
#/var/log/folder/datastore.log
~
}

#$FileOwner xxxxx
local6.*                -/var/log/folder/datastore.log
local6.notice           -/var/log/folder/notice.log

#Reset file ownership to root
#$FileOwner root

我已经尝试了旧的和新的语法,但权限将会显示:

-rw-r--r--  1 syslog syslog  263 Nov  8 15:40 datastore.log

仅当我将 $PrivDropToUser 和 $PrivDropToGroup 设置为 root 时,才会显示如下:

-rw-r--r--  1 xxxxx xxxxx  263 Nov  8 15:45 datastore.log

知道为什么吗?

答案1

根据本文档页面,PrivDropToUser 和 PrivDropToGroup 指令告诉 rsyslog 在初始启动后要成为哪个用户/组。我假设 syslog 用户没有足够的权限像其他用户一样创建文件,而 root 有。

从我对以上页面的阅读来看,我认为其意图是,如果您希望您的日志文件由较低级别的用户拥有,您可以将该用户放入 ProvDropToUser;例如$PrivDropToUser xxxxx $PrivDropToGroup xxxxx

您还需要确保您的日志文件要写入的文件夹允许 PrivDropToUser 中的用户或 PrivDropToGroup 中的组进行写访问。

我在尝试找出如何让我的应用读取 Web 应用的日志文件时找到了这个页面,既然没有答案,我想分享我的发现。但我不是专家。

感谢您的提问,它帮助我找到了自己的答案。

相关内容