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
.