我在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操作系统。