Obtendo Informações sobre Senha - Linux
O Status da Senha
Além de configurar a senha, o comando passwd também permite verificar o status da senha. Para isso, utilize a opção -S
Por exemplo, suponha que anteriormente foi criado um usuário chamado "superuser1" e uma senha foi configurada para ele:
programicio@Programicio:~$ sudo useradd superuser1 programicio@Programicio:~$ sudo passwd superuser1 New password: Retype new password: passwd: password updated successfully
Vamos verificar o status da senha desse usuário:
programicio@Programicio:~$ sudo passwd -S superuser1 superuser1 P 2024-03-07 0 99999 7 -1
O status da senha exibe as seguintes informações:
Nome de usuário
Data de configuração da senha
Número de dias até que a senha possa ser alterada
Número de dias após os quais a senha deve ser alterada
Número de dias antes da expiração da senha em que o usuário recebe um aviso
Número de dias após a expiração da senha até que a conta seja bloqueada
Da mesma forma, é possível obter o status da senha do usuário atual:
programicio@Programicio:~$ passwd -S programicio P 2024-01-28 0 99999 7 -1
Obtendo Informações do Arquivo /etc/shadow
O arquivo /etc/passwd
superuser1:x:1001:1001::/home/superuser1:/bin/sh
O segundo campo, representado pelo símbolo "x", indica que a senha está armazenada no arquivo /etc/shadow
root:*:13669:0:99999:7::: daemon:*:13669:0:99999:7::: bin:*:13669:0:99999:7::: sys:*:13669:0:99999:7::: sync:!:13669:0:99999:7::: sssd:!:13669:::::: programicio:$1$Qqn0p2NN$L7W9uL3mweqBa2ggrBhTB0:13669:0:99999:7::: ...
As linhas em /etc/shadow
Login
Senha criptografada. Além da própria senha, pode haver o símbolo
, indicando que o login está desativado no momento. Também pode ser usado o símbolo!
, que significa uma conta de sistema usada para executar serviços, mas não permite login interativo (tendo, portanto, o mesmo efeito que*
).!
Dias entre 1 de janeiro de 1970 e a data da última alteração da senha.
Número mínimo de dias antes que a senha possa ser alterada, que é o período durante o qual o usuário deve usar a mesma senha.
Número máximo de dias após os quais a senha deve ser alterada, que é o período durante o qual o usuário pode usar a mesma senha.
Número de dias antes da expiração da senha em que o usuário recebe um aviso.
Número de dias após a expiração da senha até que a conta seja desativada. (Se isso acontecer, será necessário a intervenção de um administrador para desbloquear a conta)
Expiração da conta: dias entre 1 de janeiro de 1970 e a data de desativação da conta.
Campo reservado (não utilizado atualmente).
Vamos obter os dados da senha do usuário "superuser1", criado no início do tema:
programicio@Programicio:~$ sudo grep superuser1 /etc/shadow superuser1:$y$XUwEQCaqGCpg8G87cC2$Dimds3J:19796:0:99999:7:::
Neste caso, temos os seguintes campos:
: loginsuperuser1
: senha criptografada$y$XUwEQCaqGCpg8G87cC2$Dimds3J
: número de dias desde 1 de janeiro de 1970 até a última alteração (ou criação, se não alterada) da senha19796
: número mínimo de dias durante os quais o usuário deve usar a senha0
: número máximo de dias de uso da senha99999
: período de aviso antes da expiração da senha7
Todos os outros parâmetros não estão especificados.
Vamos supor que removemos a senha do usuário "superuser1" e verificamos novamente o estado da senha:
programicio@Programicio:~$ sudo passwd -d superuser1 passwd: password changed. programicio@Programicio:~$ sudo grep superuser1 /etc/shadow superuser1::19796:0:99999:7:::
Agora, a senha está ausente, o que é indicado por dois pontos consecutivos após o nome do usuário ::