rsyslog 更改文件所有者

And*_*ndy 8 linux permissions syslog

我正在尝试将日志的所有者和组更改为与 rsyslog.conf 不同的用户,后者具有:

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
Run Code Online (Sandbox Code Playgroud)

我在 /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
Run Code Online (Sandbox Code Playgroud)

我尝试了旧语法和新语法,但权限将显示为:

-rw-r--r--  1 syslog syslog  263 Nov  8 15:40 datastore.log
Run Code Online (Sandbox Code Playgroud)

只有当我将 $PrivDropToUser 和 $PrivDropToGroup 设置为 root 时,它才会出现:

-rw-r--r--  1 xxxxx xxxxx  263 Nov  8 15:45 datastore.log
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?

小智 5

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

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

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

我发现此页面试图找出如何使我的网络应用程序的日志文件可供我的应用程序读取,并认为我会分享我所发现的内容,因为没有答案。但我不是专家。

谢谢你的问题,它帮助我找到了自己的答案。