Linux / Comando passwd: alterar senhas e consultar seu estado

passwd altera interativamente a senha de uma conta no Linux. Um usuário comum troca a própria senha; um administrador autorizado pode trocar a de outra conta, depois de confirmar o nome de destino. A entrada normalmente não mostra letras nem asteriscos no terminal.

Sintaxe e condições de uso

passwd [opção...] [usuário]

Os termos entre colchetes descrevem argumentos opcionais, não uma senha para escrever na linha de comando. Sem indicar outro usuário, passwd atua na conta correspondente ao contexto de execução. Confira sua identidade com o comando whoami antes de iniciar a alteração.

As opções descritas aqui seguem o manual de passwd do projeto shadow-utils, incluindo a versão 4.20.3 publicada pelo Debian. Consulte man passwd e passwd --help no sistema Linux em que fará a tarefa. Um programa de mesmo nome em outro sistema pode ter opções e efeitos diferentes.

O PAM, sigla de Pluggable Authentication Modules, é a camada modular usada para autenticação e troca de senhas nessa implementação. A política do sistema pode exigir a senha atual, impor intervalo mínimo entre mudanças ou recusar uma nova senha. Contas administradas por um serviço de diretório também dependem do repositório e da política correspondentes.

Alterar a própria senha

Na sessão da conta que deseja alterar, execute:

passwd

Siga a solicitação da senha atual quando ela aparecer. Em seguida, informe a nova senha e repita-a para confirmação. A implementação verifica tanto a correspondência entre as duas entradas quanto as condições de alteração e a política aplicável.

Para trocar a senha da sua conta, não acrescente sudo por hábito: a elevação muda o contexto em que o programa atua e pode direcionar a operação para outra conta. Se não souber a senha atual, a recuperação depende de um administrador ou do procedimento de recuperação do serviço; uma nova tentativa de passwd não contorna essa exigência.

Alterar a senha de outra conta

O exemplo usa alice como nome ilustrativo. Execute-o somente se alice for realmente a conta de destino e se sua política de administração autorizar a operação; caso contrário, substitua o nome pelo da conta correta:

sudo passwd alice

A autorização do comando sudo é uma etapa diferente da escolha da nova senha de alice. Leia o nome do programa e cada solicitação exibida. O superusuário pode redefinir uma senha esquecida sem conhecer a senha anterior da conta de destino; não confunda essa capacidade administrativa com a troca comum feita pelo próprio usuário.

A mudança afeta a credencial usada nas autenticações que dependem dela. Confirme o nome antes de executar e comunique a nova credencial pelo procedimento aprovado para essa conta, sem incluí-la no comando, no histórico, em capturas ou no registro da tarefa.

Consultar o estado com -S

Para a consulta administrativa da conta ilustrativa:

sudo passwd -S alice

A opção -S consulta o estado da senha; ela não faz a troca interativa. No shadow-utils, o resultado tem sete campos: nome de login, estado da senha, data da última alteração, idade mínima, idade máxima, período de aviso e período de inatividade. Os quatro períodos são expressos em dias.

No campo de estado, L indica senha bloqueada, NP indica ausência de senha e P indica uma senha utilizável. Esse campo não mostra a senha em texto nem garante que todos os serviços permitirão login. Leia-o em conjunto com os períodos e com a política de autenticação do serviço que deseja verificar.

Acompanhar a troca interativa

O comando a seguir repete a troca da própria conta. As mensagens depois dele são uma ilustração do fluxo, não o registro de uma mudança executada neste guia:

passwd

Exemplo de mensagens; idioma, sequência e validações podem variar:

Current password:
New password:
Retype new password:
passwd: password updated successfully
  1. Em Current password, informe a senha atual se ela for solicitada e pressione Enter.
  2. Em New password, informe a nova senha conforme a política da conta.
  3. Em Retype new password, repita a mesma nova senha e pressione Enter.
  4. Leia a mensagem final e confira se a alteração terminou com sucesso; apenas chegar ao segundo campo não significa que a senha foi salva.

Não é necessário ver caracteres ou asteriscos enquanto digita. A ausência de eco no terminal é diferente de um erro de digitação informado pelo programa. Evite repetir a senha em comandos de diagnóstico ou preencher os espaços deste exemplo com uma credencial real.

Após o programa terminar, consulte echo "$?" imediatamente, antes de executar outro comando. No manual shadow-utils, 0 indica sucesso; um retorno diferente exige ler o diagnóstico. Não interprete uma senha rejeitada, uma falha de autorização ou um erro de atualização como uma mudança concluída.

Distinguir bloqueio, desbloqueio e expiração

Além da consulta com -S, as opções abaixo mudam o estado de autenticação. Elas devem corresponder ao objetivo administrativo e à conta correta; não são passos necessários para uma troca comum de senha.

Opção Efeito no shadow-utils
-S Consulta o estado da senha e os períodos associados.
-l Bloqueia o uso da senha; não desativa todos os meios de acesso à conta.
-u Desfaz o bloqueio da senha, restaurando o valor anterior ao bloqueio.
-e Expira imediatamente a senha, para exigir sua troca no próximo login sujeito a essa política.

Bloquear uma senha com -l não equivale a desativar a conta. Uma chave SSH ou outro meio de autenticação ainda pode permitir acesso, conforme o serviço. O objetivo de interromper todos os acessos requer examinar as políticas da conta e dos serviços, além do estado dessa senha.

A opção -u reverte um bloqueio da senha; ela não é um procedimento genérico para desfazer qualquer alteração ou recuperar uma senha substituída. Já -e expira a senha, não define uma nova. Antes de exigir a troca no próximo login, confirme que o fluxo de autenticação usado pela conta permite concluir essa etapa.

Verificar uma recusa ou falha

Se a nova senha for recusada, siga a mensagem sobre confirmação, política ou intervalo permitido entre mudanças. Não remova controles de autenticação apenas para conseguir concluir o exemplo. Uma falha de PAM, falta de permissão ou arquivo de senha ocupado pede uma investigação diferente de uma confirmação digitada incorretamente.

Uma consulta com -S ajuda a verificar o estado e a data de alteração, mas não testa a senha nem a configuração de cada serviço. Em uma alteração administrativa remota, mantenha uma sessão autorizada de administração até verificar o acesso pelo método realmente usado, em outra sessão. Não encerre seu único acesso funcional antes dessa verificação.

O programa usa a configuração de PAM e os repositórios definidos pelo sistema. Não tente corrigir um erro gravando a senha diretamente em /etc/passwd ou /etc/shadow. Se a conta pertence a um diretório centralizado, confira o procedimento desse serviço antes de presumir que uma mudança local alcançou a conta pretendida.

Pergunta frequente

É normal não aparecerem letras nem asteriscos ao digitar a senha?

Sim. É comum o terminal não mostrar nenhum caractere enquanto passwd recebe a senha. Conclua a entrada e pressione Enter; depois leia a próxima solicitação ou mensagem de erro. Não espere asteriscos como confirmação de cada tecla.

Documentação

Consulte o manual de passwd do projeto shadow-utils reproduzido no man7.org para o fluxo de alteração, bloqueio e códigos de saída. A página de passwd publicada pelo Debian descreve também os sete campos de -S e as condições de autenticação.