Em / etc / group, qual é o significado do segundo campo?

16

Um exemplo de arquivo /etc/group contém as seguintes entradas:

root:*:0:
adm:!:4:logcheck
antoine:x:1000:

As páginas man que eu li (Debian & OSX) dizem que o segundo campo é armazenar uma senha de grupo. Como raramente são usados, um asterisco * ou x é geralmente colocado nele, em vez de deixá-lo em branco.

A página shadow man também diz que esse segundo campo deve armazenar o resultado da função crypt . E se um resultado inválido for armazenado (como * ou ! ), significa que a senha não pode ser usada como método de autenticação.

Isso vale também para o arquivo group ? Por que acabo com 3 caracteres diferentes no meu arquivo group , todos tendo o mesmo significado? Posso alterar com segurança tudo para * ?

    
por Tonin 28.08.2012 / 16:55

1 resposta

25

Você está pensando que o ! , * ou x tem um significado especial aqui e, portanto, é preocupante que possa haver alguma distinção entre eles.

O fato é que esses personagens são escolhidos simplesmente porque se destacam, pelo menos para os olhos ocidentais. Esses caracteres indicam um valor ausente ou um caso de exceção ou um aviso. Você poderia colocar boogabooga aqui e ter exatamente o mesmo efeito.

Isso se deve à maneira como as senhas são tratadas em sistemas do tipo Unix. Quando o sistema recebe uma entrada de senha, o hashes é comparado com o hash armazenado. Portanto, tudo o que importa aqui é que você use algum caractere ou seqüência de caracteres que possivelmente não podem ser um hash de senha válido. (Também não deve incluir dois pontos, por razões óbvias).

Embora não haja diferença entre esses caracteres na perspectiva do sistema operacional central, existem algumas convenções:

  • Quando o programa pwconv(8) do Linux vê x , isso significa "Eu já movi este hash de senha pública para o arquivo de senhas shadow".

    Este não é um caso importante na prática porque os dias de conversão para (ou, o céu te ajuda, de ) senhas shadow estão atrás de nós agora.

  • Se você usa usermod -L ou passwd -l para bloquear um usuário, ! tem um significado especial em /etc/shadow porque essa é a convenção para "dividir esse hash para que ele não corresponda mais".

    Adicionar qualquer outro caractere ao hash armazenado também o quebraria. Violar esta convenção simplesmente impede que usermod -U ou passwd -u desbloqueie o login do usuário. Igualmente verdade, já que você bloqueou manualmente adicionando um personagem falso, você pode desbloqueá-lo manualmente removendo-o.

    Tudo o que é apenas trivial com relação a esta questão, no entanto. Não há groupmod -L ou gpasswd -l , portanto, nenhuma convenção ! em /etc/group .

    Mais trivia: se você estiver indo para bloquear manualmente as contas de usuário, você deve ficar longe do [A-Za-z0-9/\] set, já que esses são caracteres legais para o hash. Esse é um dos motivos por que usermod usa ! aqui em vez de x .

Não vejo nada de errado em normalizar todos os seus campos /etc/group password, se isso fizer com que você se sinta melhor. Ao fazer isso, você já está dizendo que está feliz em hackear esses arquivos manualmente, então provavelmente você não é do tipo que usa as ferramentas que se importam com as distinções. Independentemente disso, a alteração não afetará a operação do sistema no dia-a-dia.

    
por 28.08.2012 / 17:44