Como o sistema Linux sincroniza o wtmp e / var / run / utmp?

0

O sistema Linux normalmente armazena as informações de login do usuário atual em /var/run/utmp e armazena informações históricas em /var/log/wtmp .

Então, como sincronizar informações entre eles,

  1. Quando um login acontece, ele grava em ambos os arquivos ou os mescla mais tarde?
  2. / var / run / utmp não deve ser persistente, e será perdido no desligamento ou reinicialização do sistema?
por daisy 17.11.2013 / 09:39

1 resposta

5

Em libmisc/utmp.c (para o Debian na origem da linha login package) 301 o comentário para setutmp() é:

/*
 * setutmp - Update an entry in utmp and log an entry in wtmp
 *
 *      Return 1 on failure and 0 on success.
 */

Na verdade, /var/run/utmp é atualizado primeiro, seguido por gravar o log chamando updwtmp() (se PAM, se usado, o PAM gravar o log). Em ambos os casos ambas as informações são escritas explicitamente e não são sincronizadas, então o seu ponto 2 não é relevante.

Para encontrar isto em um sistema Debian. Adivinha quem poderia escrever (kernel, login command). A pesquisa utmp e wtmp strings no kernel não dá muita informação. Portanto, use dpkg -S $(which login) para encontrar o nome do pacote de onde login vem e pesquise debian login package no Google. Isso levará você a shadow*.tar.gz nessas fontes. Você encontrará o código que escreve utmp e wtmp .

    
por 17.11.2013 / 10:02

Tags