Eu gostaria de manter o histórico de login e logout dos usuários no Linux.
Ou seja, deixe-me saber se as chamadas relevantes do sistema são usadas para eventos de login e logout, para que eu possa fazer isso por meio da conexão da chamada do sistema.
Além disso, se houver outra maneira de o meu código proprietário (processo ou thread) poder receber eventos de login e logout.
Além disso, se já houver um mecanismo de manutenção de histórico de login / saída no Linux, por favor, deixe-me saber onde posso obter as informações detalhadas.
Obrigado.
Feliz
Respostas:
Se o subsistema de auditoria do kernel estiver habilitado, você poderá habilitar
pam_loginuid.so
Módulo PAM, que criará uma nova "sessão de auditoria" para cada login (escrevendo para / proc / self / loginuid). Isso será registrado pelo auditd ou systemd-journald.Mas além disso há não são qualquer chamada de sistema de "login". Quase tudo é feito no espaço do usuário (e um pouco disperso), exceto pela troca final de credencial (que também é freqüentemente feita por daemons internamente). Não há um único evento "usuário efetuou login", pelo menos nenhum que seria consistente em todas as distribuições do Linux.
No entanto, todos os componentes envolvidos Faz já log de montes de informações. Por exemplo, você pode encontrar um log de sessão
/var/log/wtmp
(leia com os comandoswho <file>
oulast
), e você pode encontrar várias mensagens sobre cada login em/var/log/secure
ou/var/log/auth.log
ou o jornal systemd:Para monitorar isso dentro do seu próprio programa, existem várias opções:
Se as máquinas de destino executarem o systemd, você poderá monitorar os sinais de D-Bus enviados pelo systemd-logind (
SessionNew
eSessionRemoved
). O ConsoleKit tem uma interface semelhante.Você pode implementar seu próprio módulo PAM, que envia notificações sobre IPC. Seria semelhante ao estágio de "sessão" do
pam_unix
(que atualmente apenas imprime a mensagem acima para o syslog).Você pode inotify-assistir os arquivos "utmp" ou "wtmp" (o primeiro em
(/var)/run/utmp
no Linux, o último em/var/log/wtmp
). A maioria das sessões de login são gravadas lá para visualização comwho
ouw
. (utmp mantém o estado atual, enquanto wtmp é um log atual.)Você pode usar o auditd, que irá registrar tanto as mensagens do kernel
pam_loginuid
bem como várias mensagens do espaço do usuário dos daemons.Não se esqueça de distinguir entre logins "interativos" (gdm, sshd, login), logins "service" (imap, ftp) e sessões "batch" (cron, systemd-user).
fonte