Diferença entre ! vs !! vs * em / etc / shadow

38

O segundo campo no /etc/shadowarquivo Linux representa uma senha. No entanto, o que vimos é que:

  1. Alguns dos campos de senha podem ter uma única exclamação

    <account>:!:.....
    
  2. Alguns dos campos de senha podem ter uma dupla exclamação

    <account>:!!:.....
    
  3. Alguns dos campos de senha podem ter um sinal de asterisco

    <account>:*:.....
    

Por alguma pesquisa na internet e através deste tópico , eu posso entender que *significa senha nunca estabelecida, !significa bloqueado.

Alguém pode explicar o que significa exclamação dupla ( !!)? e como é diferente de ( !)?

JavaTec
fonte
Qual distribuição você está usando?
Muru
Oi Muru, sou novo no Unix e estou tentando criar um script que será executado no RHEL 6.6 e no HP-UX B.11.23
JavaTec
3
"Por convenção, as contas que não pretendem fazer login (por exemplo, bin, daemon, sshd) contêm apenas um único asterisco no campo da senha. Observe que não há nada de especial em '*', é apenas um dos muitos caracteres que não pode ocorrer em uma senha criptografada válida (consulte criptografia (3)). " - Página de manual do OpenBSD para passwd (5) . Eu esperaria ! ou !! tecnicamente, não será diferente em relação a se é um arquivo passwd válido ou a logons. No entanto, algumas ferramentas podem ter suporte especial.
TOOGAM
11
Não use o documento dos BSDs como referências para isso. O banco de dados de suas contas lida com as coisas de maneira diferente e nem sequer possui um /etc/shadowarquivo. Também não coloque respostas nos comentários . ☺
JdeBP

Respostas:

31

Ambos "!" e "!!" estar presente no campo de senha significa que uma conta está bloqueada.

Como pode ser lido no documento a seguir, "!!" em uma entrada de conta na sombra significa que a conta de um usuário foi criada, mas ainda não recebeu uma senha. Até receber uma senha inicial por um administrador de sistema, ela será bloqueada por padrão.

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/System_Administration_Guide/s2-redhat-config-users-process.html

Rui F Ribeiro
fonte
4
Talvez isso seja verdade nos sistemas Red Hat, mas não necessariamente em outros lugares - no Ubuntu ou Arch Linux, uma conta recém-criada sem senha ainda tem apenas !, não !!.
muru
2
É verdade que eu nunca vi um "!!" em um sistema Debian. Eu acho que o OP está usando algum sistema baseado em RH, ou SuSE.
Rui F Ribeiro
Obrigado por suas respostas rápidas, a explicação acima fornecida por Rui - também é válida para um hp-ux?
JavaTec
4
@JavaTec Não necessariamente: acho que todos os departamentos que têm um /etc/shadowtêm o mesmo campo, mas como o campo de senha armazena informações que não são de senha variam. Verifique a documentação do HP-UX, começando com a shadowpágina do manual.
Gilles 'SO- stop be evil'
11
O HP-UX não tinha /etc/shadowaté recentemente: antes do HP-UX 11.11, as opções eram clássicas sem sombras /etc/passwdou "Trusted Computing Base", que armazenavam os hashes de senha de cada usuário e outras informações da conta em arquivos individuais nomeados /tcb/files/auth/<initial>/<username>, legíveis apenas pela raiz. No HP-UX 11.11, /etc/shadowfoi introduzido como um extra opcional , na 11.23 era uma opção no sistema operacional base e na 11.31 o TCB foi finalmente descontinuado.
telcoM 21/01
10

Também pode ser interessante notar o <account>::.....significado de que não há senha necessária (senha vazia).

Se você estiver criando um usuário somente ssh, poderá <account>::0:0:99999:7:::solicitar que o usuário defina sua senha (ou seja, que eles usem para sudo) no primeiro login.

CoolAJ86
fonte
8
Cuidado com isso. Um campo vazio significa que não há senha e você só precisa pressionar ENTER para fazer login, pelo menos no console.
Rui F Ribeiro
Em man shadowrelação ao campo de senha criptografada: "Este campo pode estar vazio; nesse caso, nenhuma senha é necessária para autenticar como o nome de login especificado". <- Deixar este campo vazio resulta em uma conta aberta e isso deve ser evitado!
Laas
Observe que muitas implementações SSH bloqueiam o login em contas com senha nula por padrão: sudo /usr/sbin/sshd -T| grep emptyretornariam: "identificarptypasswords no"
Brian Huntley