Como ver o evento de login programaticamente?

2

Eu quero encontrar programaticamente a partir de um arquivo de log que o usuário efetua login em uma máquina Debian. Também quero ver quem faz o login e o que está registrado no arquivo nesse momento. Como realizar essa tarefa na máquina Debian versão 4.1 ou 5?

Se a informação não estiver presente em nenhum arquivo, existe outra maneira de capturar esses eventos e obter os detalhes do evento programaticamente?

    
por mico 13.06.2011 / 14:53

4 respostas

0

O arquivo /var/run/utmp tem informações sobre quem está logado, o que estão usando, há quanto tempo estão inativos e muito mais. Assistindo este arquivo (sendo uma API C para isso ( /usr/include/utmp.h )).

Além disso, /var/log/wtmp (se eu entendi as páginas man corretamente), é a lista de usuários que estavam logados.

    
por 13.06.2011 / 15:33
1

O comando last é a abordagem da linha de comando. Veja man last para as opções.

Ele pesquisa por /var/log/wtmp para detalhes de login.

Você pode fazer isso de maneira programática.

    
por 13.06.2011 / 15:30
0

examine os eventos da sessão de autenticação /var/log/auth.log. Você precisa de privilégios de root para acessar esse arquivo.

    
por 13.06.2011 / 15:34
0

No Linux, não há um único evento de "login" - cada programa pode implementá-lo de maneira própria. O mais próximo é o PAM ... para aplicativos que usam o PAM. A maioria faz isso, mas, por exemplo, o SSH só chama pam_authenticate () se você efetuar login usando uma senha, mas não quando chaves públicas ou Kerberos são usadas, embora pam_open_session () seja sempre chamado.

Se você precisar registrar somente sessões interativas (SSH, console), assista /var/log/wtmp (usando inotify ). Veja a página de manual de wtmp para descrição da estrutura exata.

Para mail, [S] FTP, outros protocolos, você terá que usar /var/log/auth.log , que infelizmente não tem um formato consistente.

  • Três exemplos diferentes de auth.log :

    • SSH com senha - ambos "sshd: auth" e "sshd: session" são listados

      sshd[24870]: pam_krb5(sshd:auth): user grawity authenticated as grawity@REALM
      sshd[24870]: Accepted password for grawity from ::1 port 57063 ssh2
      sshd[24870]: pam_unix(sshd:session): session opened for user grawity by (uid=0)

    • IMAP - "mail: auth" mas não "mail: session"

      auth [0 wait, 0 passdb, 0 userdb]: pam_krb5(mail:auth): user grawity authenticated as grawity@REALM

    • SSH com chave pública - apenas "sshd: session" mas sem "sshd: auth"

      sshd[24985]: Accepted publickey for grawity from ::1 port 51606 ssh2
      sshd[24985]: pam_unix(sshd:session): session opened for user grawity by (uid=0)

por 13.06.2011 / 15:34