passwd e chage: Senha e Envelhecimento de Conta
O Que Você Vai Aprender
- A diferença de funções entre
passwdechage - Como alterar senhas, bloquear contas e verificar status com confiança
- Como configurar envelhecimento de senha de acordo com sua política
- Como ler
/etc/shadowpara ver o estado atual de relance
Resumo Rápido
- O valor da senha em si (alterar, bloquear, deletar) -->
passwd - As regras de envelhecimento (max / min / aviso / expiração) -->
chage - Ambos escrevem no mesmo
/etc/shadow. Operar em outros usuários requer root (sudo)
Premissas
- SO: Ubuntu / Linux em geral (shadow-utils)
- Operar em outros usuários assume
sudo - Cobre contas locais (gerenciadas em
/etc/shadow). Ambientes integrados com LDAP / AD estão fora do escopo
Qual é a diferença entre passwd e chage?
Conclusão:
passwdopera no "valor" da senha, enquantochageopera nas "regras de envelhecimento" da senha. Ambos visam campos diferentes do mesmo/etc/shadow.
Uma linha no /etc/shadow é composta por 9 campos separados por dois pontos. Dividir onde cada comando escreve torna as funções claras.
alice:$6$xxxx...:19876:7:90:7:30:20089: | | | | | | | | | | | | | | | +-- (8) Data de expiracao da conta (dias desde 1970-01-01) | | | | | | +-- (7) Dias inativos apos expiracao | | | | | +-- (6) Dias de aviso antes da expiracao | | | | +-- (5) Idade maxima da senha (dias) | | | +-- (4) Dias minimos antes de realterar | | +-- (3) Ultima alteracao de senha (dias desde 1970-01-01) | +-- (2) Senha hasheada +-- (1) Nome de usuario
passwd--> reescreve o campo 2 (o hash)chage--> reescreve os campos 3-8 (envelhecimento / expiração)
Campos de data são armazenados como "dias desde 1970-01-01". chage -l os converte em formato legível (veja abaixo).
Como alterar uma senha?
Conclusão: Altere sua própria senha apenas com
passwd. Alterar a senha de outro usuário requer root viasudo passwd username.
Sua própria senha
$ passwd
Digite a senha atual uma vez e a nova senha duas vezes. Nada é mostrado na tela enquanto digita (por design).
Senha de outro usuário (admin)
$ sudo passwd alice
Não é solicitada a senha atual; apenas digite a nova senha duas vezes.
Após definir uma senha inicial para um novo usuário, force-o a alterá-la no próximo login. Use passwd --expire alice (equivalente a chage -d 0 abaixo).
Como bloquear uma conta ou verificar seu status?
Conclusão: Use
passwd -lpara bloquear,passwd -upara desbloquear epasswd -Spara verificar o status em uma linha. Bloquear desabilita a autenticação por senha prefixando o hash com!.
Verificar status
$ sudo passwd -S alice
alice P 06/05/2026 0 99999 7 -1
A segunda coluna significa:
P: uma senha utilizável está definidaL: bloqueadaNP: nenhuma senha definida
Bloquear e desbloquear
# Desabilitar autenticacao por senha (funcionarios desligados, contas dormentes, etc.) $ sudo passwd -l alice # Desbloquear $ sudo passwd -u alice
passwd -l apenas impede a autenticação por senha. Não impede a autenticação por chave SSH. Para bloquear completamente alguém, use também a expiração de conta (chage -E, ou usermod -L mais desabilitação do shell).
Como verificar a expiração da senha?
Conclusão: Execute
chage -l usernamepara listar a data da última alteração, próxima expiração e todas as políticas em formato legível.
$ sudo chage -l alice
Last password change : Jun 05, 2026 Password expires : Sep 03, 2026 Password inactive : Oct 03, 2026 Account expires : never Minimum number of days between password change : 7 Maximum number of days between password change : 90 Number of days of warning before password expires : 7
- Password expires: o dia em que esta senha para de funcionar (última alteração + max)
- Password inactive: o dia em que a conta se torna inutilizável após o período de graça pós-expiração acabar (+ inativo)
- Account expires: o dia em que a própria conta é desabilitada (definido com
-E)
Como configurar o envelhecimento de senha?
Conclusão: Use
chage -Mpara a idade máxima,-mpara a mínima,-Wpara dias de aviso e-Ipara o período de graça pós-expiração. Múltiplas opções podem ser combinadas em um único comando.
Opções principais
| Opção | Significado | Exemplo |
|---|---|---|
-M |
Idade máxima em dias (expira além disso) | -M 90 |
-m |
Dias mínimos antes que a senha possa ser alterada novamente | -m 7 |
-W |
Dias de aviso antes da expiração | -W 7 |
-I |
Dias de graça antes da conta ser desabilitada após expiração | -I 30 |
-E |
Data de expiração da conta (AAAA-MM-DD) | -E 2026-12-31 |
-d |
Sobrescrever a data da última alteração | -d 0 |
Definir tudo de uma vez
$ sudo chage -M 90 -m 7 -W 7 -I 30 alice
Isso significa: "expira em 90 dias, sem realteração por 7 dias após uma mudança, avisa 7 dias antes, desabilita a conta 30 dias após a expiração."
Forçar alteração no próximo login
$ sudo chage -d 0 alice
Redefinir a data da última alteração para a época faz com que conte como "já expirada", forcando uma alteração de senha no próximo login.
Para definir cada item interativamente, execute sudo chage alice sem opções. Os valores atuais aparecem entre [ ] e você pode mantê-los pressionando Enter.
Como definir uma data de expiração da conta?
Conclusão: Use
chage -E datepara definir a expiração da própria conta. Use para usuários com prazo fixo ou contas temporárias que devem se auto-desabilitar.
# Desabilitar a conta em 2026-12-31 $ sudo chage -E 2026-12-31 alice # Limpar expiracao (reverter para nunca) $ sudo chage -E -1 alice
-E é independente da expiração de senha (-M). Quando você precisa parar o login de forma confiável no final de um contrato, use -E (expiração da conta), não -M (expiração da senha).
Erros comuns e como diagnosticá-los
Conclusão: A maioria dos problemas "não consegue alterar" ou "bloqueado imediatamente" vem da configuração de dias mínimos,
-d 0ou um erro de data de expiração. Sempre confirme o estado comchage -l.
Não consegue alterar a senha ainda
You must wait longer to change your password
A configuração -m (dias mínimos) está em efeito. Como admin, você pode alterar imediatamente com sudo passwd.
Bloqueado logo após a configuração
Verifique se chage -d 0 combinado com -M/-I criou uma situação de "expirar agora + zero graça".
$ sudo chage -l alice
Não aplique envelhecimento a senha do root
Aplicar envelhecimento a contas de sistema ou root arrisca bloquear você mesmo. Restrinja a política a contas de usuário regulares e interativas.
O que não fazer
- Aplicar envelhecimento descuidadamente ao
rootou contas de serviço - Confundir
chage -Ecompasswd -l(o primeiro é a conta, o segundo é a senha) - Deixar configurações sem verificação em vez de confirmar com
chage -l