Debian: не срабатывает logrotate — unknown group ‘syslog’

Автор: | 10/09/2019
 

Имеется AWS EC2 с Debian с logrotate.

Закончилось место на корневом разделе, начали искать причину, обнаружилось, что накопились файлы вида /var/log/syslog.N.gz.

При этом по-умолчанию logrotate создаёт файл настроек для syslog:

root@monitoring-dev:~# cat /etc/logrotate.d/syslog
Ansible managed
/var/log/syslog {
size 10M
rotate 1
daily
...
}

Т.е. должен оставаться syslog + syslog.1, а вместо этого имеем:

root@monitoring-dev:~# ll /var/log/ | grep syslog
-rw-r----- 1 root        adm      11925 Oct  9 09:26 syslog
-rw-r----- 1 root        adm     361150 Oct  9 06:25 syslog.1
-rw-r----- 1 root        adm       7712 Oct  8 06:25 syslog.2.gz
-rw-r----- 1 root        adm       7562 Oct  7 06:25 syslog.3.gz
-rw-r----- 1 root        adm       7832 Oct  6 06:25 syslog.4.gz
-rw-r----- 1 root        adm       7720 Oct  5 06:25 syslog.5.gz
-rw-r----- 1 root        adm       7641 Oct  4 06:25 syslog.6.gz
-rw-r----- 1 root        adm       8072 Oct  3 06:25 syslog.7.gz

Проверяем — запускаем logrotate с --debug:

root@monitoring-dev:~# logrotate -d /etc/logrotate.conf
reading config file /etc/logrotate.conf
error: /etc/logrotate.conf:5 unknown group 'syslog'
removing last 0 log configs

unknown group ‘syslog’

Собственно — вот и ошибка.

Возникает потому, что у Debian группы syslog нет, но есть группа adm, которая является группой владельцев логов по-умолчанию.

Проверяем /etc/logrotate.conf:

# Ansible managed

# see "man logrotate" for details
weekly
su root syslog
...

И проверяем существующие в системе группы:

root@monitoring-dev:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:admin
...

Меняем syslog на adm:

# Ansible managed 

# see "man logrotate" for details
weekly
su root adm
...

Проверяем ещё раз:

root@monitoring-dev:~# logrotate -d /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d
reading config file apt
reading config file certbot
reading config file chrony
reading config file daemonlog
reading config file dpkg
reading config file exim4-base
reading config file exim4-paniclog
reading config file nginx
reading config file rsyslog
reading config file syslog
reading config file unattended-upgrades
Reading state from file: /var/lib/logrotate/status
Allocating hash table for state file, size 64 entries
...

Готово.