Isso é feito por logrotate , que como um trabalho diário de cron verifica seus arquivos de configuração para arquivos de log que precisam ser rotacionados, compactados, removidos e executam as ações necessárias.
Para /var/log/auth.log , que é na verdade um arquivo rsyslog gerenciado, como rsyslog despeja todas as informações de autenticação ( auth , authpriv facilities) lá (conf file: /etc/rsyslog.d/50-default.conf ), a configuração relevante arquivo para logrotate é /etc/logrotate.d/rsyslog .
No meu 14.04 que contém:
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
Portanto, /var/log/auth.log está sendo rotacionado por essa configuração.
Para modificar o comportamento para manter o número desejado de arquivos girados, você pode alterar o parâmetro rotate para o valor desejado (qualquer inteiro positivo, 0 removerá os arquivos antigos instantaneamente) na seção { ... } após o declaração de nome de arquivo, mas isso mudará o comportamento de todos os arquivos mencionados, o que pode não ser o comportamento desejado.
Em vez disso, remova /var/log/auth.log de lá e faça uma entrada separada para isso colocando o seguinte no final:
/var/log/auth.log
{
rotate 10
weekly
missingok
notifempty
compress
delaycompress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
O texto acima irá girar /var/log/auth.log , weekly , com compress -ion, não se estiver vazio ( notifempty ), e manterá 10 de cópias giradas, e as mais antigas serão removidas .
Altere-os para atender sua necessidade e leia também man 5 logrotate.conf .