最近我注意到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 选项禁用此选项。