Logrotate创建模式



我在linux中使用logrotate服务时遇到了问题。我有一个logrotate配置mongodb日志如下:

/var/log/mongodb/mongod.log
{
rotate 10
daily
dateext
dateformat %Y-%m-%d-%s
dateyesterday
missingok
create 644 mongodb mongodb
delaycompress
compress
sharedscripts
postrotate
/bin/kill -SIGUSR1 $(pgrep mongod)
endscript
}

可以看到,我期望新mongodb文件的模式是644,但它是600,只有关闭的日志文件模式是644。

ls -l命令输出:

total 640
-rw------- 1 mongodb mongodb  9822 May 29 19:42 mongod.log
-rw-r--r-- 1 mongodb mongodb     0 May 29 19:29 mongod.log.2022-05-29T14-59-01

我不明白到底是什么问题。

默认情况下,mongod进程将其日志文件的权限设置为600,例如,只有所属进程可以读写。

从mongod 3.6开始,您可以在启动时将参数honorSystemUmask设置为true,以允许使用默认用户的umask创建新的日志文件。

从mongod 4.4开始,您可以使用processUmask将mongod进程的默认umask修改为自定义umask。

的例子:

mongod --setParameter processUmask=137

在这种情况下,您的日志文件将具有权限:640

解释道:

777 - 137 = 640

Owner将具有读/写(6)权限,group将具有只读(4)权限,其他用户将没有任何权限(0)…

为了允许以后的其他linux用户读取mongo日志文件,您可以将它们添加到mongo组,如下所示:

usermod -a -G <mongogroup> <userid>

检查用户是否属于mongo组:

groups <userid>

请注意,以上参数不适用于Windows操作系统。

最新更新