我正在尝试将日志的所有者和组更改为与 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 应用的日志文件时找到了这个页面,既然没有答案,我想分享我的发现。但我不是专家。
感谢您的提问,它帮助我找到了自己的答案。