useradd --no-log-init [questão de compreensão]

2

TLDR : Como o useradd --no-log-init é realmente usado [no GNU / Linux [Debian]?

Eu li a página man e info do comando sobre essa opção como: » o usuário não será listado nos arquivos lastlog e faillog ⁄ saída «. Eu sei que o módulo PAM assumiu a maior parte do trabalho de login real. Eu entendo os comandos lastlog e faillog , e estou ciente de que através do último, por exemplo o número de tentativas de login e tal pode ser definido.

Eu também sei que as tentativas de login incorreto foram registradas em /var/log/utmp . Isso fortalece minha suspeita de que esse comando seja "sobra" de antes que o módulo PAM assumisse o trabalho.

    
por erch 30.07.2013 / 19:02

1 resposta

1

Se você olhar para o useradd. fonte c existe esse bit que mostra o seguinte.

Supondo que a opção de linha de comando --no-log-init foi definida, as funções faillog_reset e lastlog_reset são chamadas:

if ((!lflg) && (getpwuid (user_id) == NULL)) {
                 faillog_reset (user_id);
                 lastlog_reset (user_id);

Quando lastlog_reset é chamado, esse bit modificará o arquivo lastlog :

     fd = open (LASTLOG_FILE, O_RDWR);
     if (   (-1 == fd)
         || (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
         || (write (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll))
         || (fsync (fd) != 0)
         || (close (fd) != 0)) {

O texto acima mostra o arquivo lastlog sendo aberto para leitura & write ( O_RDWR ) seguido por uma instrução if que garante que o arquivo foi aberto com sucesso seguido por um seek dentro do arquivo em um local e write das informações do novo usuário no arquivo. Depois o arquivo é fechado.

Com base nisso, eu suponho que essa opção controla se o UID de um usuário é adicionado ao arquivo lastlog "database" e nada mais.

    
por 30.07.2013 / 21:19