logrotate 无法轮换日志:错误设置所有者

logrotate 无法轮换日志:错误设置所有者

最近我注意到logrotate我的日志没有轮换。

user1@host:~$ /usr/sbin/logrotate /home/user1/logrotate.conf -v给了我一个错误:

error: error setting owner of /home/logs/mylog.log.1 to uid 10111 and gid 10111: 
Operation not permitted
error: error creating output file /var/lib/logrotate/status.tmp:
Permission denied

gid让我很困惑,因为user1只是一个具有不同特征的群体的成员gid

user1@host:~$ id
uid=10111(user1) gid=1001(mygroup) groups=1001(mygroup)

但是,还有另一个名为的组user1,但正如我提到的,实际用户user1不是其成员:

user1@host:~$ cat /etc/group | grep user1
user1:x:10111

这里有一些简单的东西,但我看不到它。

更新:logrotate.conf 如下所示:

/home/logs/*.log { rotate 7 daily copytruncate compress notifempty }

user1@host:~$ ls -al /home/logs/ -rw-r--r-- 1 user1 mygroup 190826983 Dec 18 06:05 mylog.log

答案1

您可以尝试使用 logrotatescreate指令来设置新创建的日志文件的权限。要使用它,您需要

/home/logs/*.log {
    rotate 7
    daily
    create 0777 user1 user1
    ^^^^^^^^^^^^^^^^^^^^^^
    copytruncate
    compress
    notifempty
 }

man logrotate

 create mode owner group, create owner group

旋转后(运行 postrotate 脚本之前)立即创建日志文件(与刚刚旋转的日志文件同名)。mode 以八进制指定日志文件的模式(与 chmod(2) 相同),owner 指定拥有日志文件的用户名,group 指定日志文件所属的组。可以省略任何日志文件属性,在这种情况下,新文件的这些属性将使用与原始日志文件相同的值作为省略的属性。可以使用 nocreate 选项禁用此选项。

相关内容