Onde é que 'last' armazena nomes de usuários?

4

Eu estava pesquisando o comando: 'last -d'.

-d: For non-local logins, Linux stores not only the host name of the remote host but its IP number as well. This option translates the IP number back into a hostname.

No início, eu estava olhando para questões semelhantes, esta em particular: 'last -d' é REALMENTE lento

Antes de atualizar meu arquivo de hosts e adicionar: 0.0.0.0 localhost, recebi menos nomes de host e mais endereços IP. Isso significa que o Linux armazena os nomes dos hosts em algum lugar no sistema operacional. Se esse é o caso, existe alguma maneira de alcançar os nomes de host sem o comando last -d ?

    
por StationaryTraveller 08.03.2015 / 15:51

1 resposta

4

De acordo com man last , meu sistema Arch Linux armazena informações de login em /var/log/wtmp . Parece estar em um formato binário - ou seja, as ferramentas de texto normais só mostram partes de isso.

Este comando: xxd /var/log/wtmp | more mostra os endereços IP com quatro pontos em formato de texto e nomes DNS totalmente qualificados.

Eu escrevi o pequeno programa a seguir para me mostrar o que estava em /var/log/utmp . Parece que nem toda entrada tem um nome de host / endereço IP, e que o formato binário tem apenas uma quantidade pequena e fixa de espaço para o nome do host.

#include <stdio.h>
#include <utmp.h>

int
main(int ac, char **av)
{
        struct utmp *utmpp;
        utmpname("/var/log/wtmp");
        while (NULL != (utmpp = getutent())) {
                printf("%s\n", utmpp->ut_host);
        }
        endutent();
        return 0;
}
    
por 08.03.2015 / 20:43

Tags