Récemment, j'ai remarqué que logrotate
ne fait pas pivoter mes journaux.
user1@Host:~$ /usr/sbin/logrotate /home/user1/logrotate.conf -v
me donne une erreur:
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
This gid
me déroute, car user1
n'est qu'un membre d'un groupe avec gid
différent:
user1@Host:~$ id
uid=10111(user1) gid=1001(mygroup) groups=1001(mygroup)
Cependant, il y a un autre groupe appelé user1
, mais, comme je l'ai mentionné, l'utilisateur réel user1
n'est pas son membre:
user1@Host:~$ cat /etc/group | grep user1
user1:x:10111
C'est quelque chose de simple ici, mais je ne le vois pas.
UPDATE: voici à quoi ressemble 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
Vous pouvez essayer d'utiliser la directive logrotates create
pour définir les autorisations du fichier journal nouvellement créé. Pour l'utiliser vous
/home/logs/*.log {
rotate 7
daily
create 0777 user1 user1
^^^^^^^^^^^^^^^^^^^^^^
copytruncate
compress
notifempty
}
De man logrotate
create mode owner group, create owner group
Immédiatement après la rotation (avant l'exécution du script postrotate), le fichier journal est créé (avec le même nom que le fichier journal qui vient d'être pivoté). mode spécifie le mode du fichier journal en octal (identique à chmod (2)), propriétaire spécifie le nom d'utilisateur à qui appartiendra le fichier journal et groupe spécifie le groupe auquel appartiendra le fichier journal. N'importe quel attribut du fichier journal peut être omis, auquel cas ces attributs du nouveau fichier utiliseront les mêmes valeurs que le fichier journal d'origine pour les attributs omis. Cette option peut être désactivée à l'aide de l'option nocreate.