Veja um exemplo de saída do arquivo de log:
Feb 26 23:04:55 pegasus internal-sftp[32524]: session opened for local user joeuser from [123.123.123.123]
Feb 26 23:04:57 pegasus internal-sftp[32524]: opendir "/home/joeuser"
Feb 26 23:04:58 pegasus internal-sftp[32524]: closedir "/home/joeuser"
Feb 26 23:05:01 pegasus internal-sftp[32524]: opendir "/home/joeuser/"
Feb 26 23:05:01 pegasus internal-sftp[32524]: closedir "/home/joeuser/"
Feb 26 23:05:02 pegasus internal-sftp[32524]: opendir "/home/joeuser/upload"
Feb 26 23:05:02 pegasus internal-sftp[32524]: closedir "/home/joeuser/upload"
Feb 26 23:05:07 pegasus internal-sftp[32524]: opendir "/home/joeuser/upload"
Feb 26 23:05:07 pegasus internal-sftp[32524]: closedir "/home/joeuser/upload"
Feb 26 23:05:09 pegasus internal-sftp[32524]: session closed for local user joeuser from [123.123.123.123]
Qual usuário é qual?
Se você observar a saída acima, há um número entre colchetes, internal-sftp[32524]
. O número é 32524. Isso representa o ID da sessão do usuário joeuser, portanto, você pode usar essa cadeia junto com as mensagens relacionadas ao login do usuário.
Rotacionando os logs
Você pode modificar o agendamento de rotação de log para vários logs em /etc/logrotate.d/*
. Cada arquivo de log geralmente possui um arquivo correspondente nesse diretório. Assim, você pode alterar o arquivo syslog
, por exemplo, ou criar o seu próprio para o seu sftp.log
logfile.
Além disso, logrotate
tem um arquivo de configuração, /etc/logrotate.conf
, que contém estas linhas:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
Estes são os arquivos usados no diretório /etc/logrotate.d
, se eles não tiverem uma configuração própria. Portanto, a maioria dos arquivos é girada semanalmente e 4 deles são mantidos. Se você quisesse manter 6 meses, seria 4 * 6 = 24 para a opção rotate
manter 6 meses, aproximadamente.
Exemplo
Se você estiver fazendo login em /var/log/sftp.log
via syslog
, será necessário fazer as alterações neste arquivo, /etc/logrotate.d/syslog
. Seu arquivo ficará assim depois de fazer as alterações necessárias:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/sftp.log
{
rotate 24
sharedscripts
postrotate
/bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null' 2> /dev/null || true
endscript
}
Como você está usando syslog
, também precisará rotacionar todos esses arquivos de log. Além disso, mantenha 24 semanas no valor desses arquivos. Se isso for inaceitável, seu único outro curso de ação seria criar uma seção separada nesse arquivo, syslog
da seguinte forma:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null' 2> /dev/null || true
endscript
}
/var/log/sftp.log
{
rotate 24
sharedscripts
postrotate
/bin/kill -HUP 'cat /var/run/syslogd.pid 2> /dev/null' 2> /dev/null || true
endscript
}
Isso tem alguns efeitos colaterais, sendo que você estará reiniciando o daemon syslog
duas vezes por semana, em vez de uma vez. Mas a sintaxe logroate não permite um controle granular fino da programação de rotação para certos arquivos de log enquanto não estiver rodando outros, quando os arquivos de log estão sendo gerados pelo mesmo serviço, ou seja, syslog
.