passwd e chage: Senha e Envelhecimento de Conta
O Que Voce Vai Aprender
- A diferenca de funcoes entre
passwdechage - Como alterar senhas, bloquear contas e verificar status com confianca
- Como configurar envelhecimento de senha de acordo com sua politica
- Como ler
/etc/shadowpara ver o estado atual de relance
Resumo Rapido
- O valor da senha em si (alterar, bloquear, deletar) -->
passwd - As regras de envelhecimento (max / min / aviso / expiracao) -->
chage - Ambos escrevem no mesmo
/etc/shadow. Operar em outros usuarios requer root (sudo)
Premissas
- SO: Ubuntu / Linux em geral (shadow-utils)
- Operar em outros usuarios assume
sudo - Cobre contas locais (gerenciadas em
/etc/shadow). Ambientes integrados com LDAP / AD estao fora do escopo
Qual e a diferenca entre passwd e chage?
Conclusao:
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 e composta por 9 campos separados por dois pontos. Dividir onde cada comando escreve torna as funcoes 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 / expiracao)
Campos de data sao armazenados como "dias desde 1970-01-01". chage -l os converte em formato legivel (veja abaixo).
Como alterar uma senha?
Conclusao: Altere sua propria senha apenas com
passwd. Alterar a senha de outro usuario requer root viasudo passwd username.
Sua propria senha
$ passwd
Digite a senha atual uma vez e a nova senha duas vezes. Nada e mostrado na tela enquanto digita (por design).
Senha de outro usuario (admin)
$ sudo passwd alice
Nao e solicitada a senha atual; apenas digite a nova senha duas vezes.
Apos definir uma senha inicial para um novo usuario, force-o a altera-la no proximo login. Use passwd --expire alice (equivalente a chage -d 0 abaixo).
Como bloquear uma conta ou verificar seu status?
Conclusao: Use
passwd -lpara bloquear,passwd -upara desbloquear epasswd -Spara verificar o status em uma linha. Bloquear desabilita a autenticacao 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 utilizavel esta 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 autenticacao por senha. Nao impede a autenticacao por chave SSH. Para bloquear completamente alguem, use tambem a expiracao de conta (chage -E, ou usermod -L mais desabilitacao do shell).
Como verificar a expiracao da senha?
Conclusao: Execute
chage -l usernamepara listar a data da ultima alteracao, proxima expiracao e todas as politicas em formato legivel.
$ 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 (ultima alteracao + max)
- Password inactive: o dia em que a conta se torna inutilizavel apos o periodo de graca pos-expiracao acabar (+ inativo)
- Account expires: o dia em que a propria conta e desabilitada (definido com
-E)
Como configurar o envelhecimento de senha?
Conclusao: Use
chage -Mpara a idade maxima,-mpara a minima,-Wpara dias de aviso e-Ipara o periodo de graca pos-expiracao. Multiplas opcoes podem ser combinadas em um unico comando.
Opcoes principais
| Opcao | Significado | Exemplo |
|---|---|---|
-M |
Idade maxima em dias (expira alem disso) | -M 90 |
-m |
Dias minimos antes que a senha possa ser alterada novamente | -m 7 |
-W |
Dias de aviso antes da expiracao | -W 7 |
-I |
Dias de graca antes da conta ser desabilitada apos expiracao | -I 30 |
-E |
Data de expiracao da conta (AAAA-MM-DD) | -E 2026-12-31 |
-d |
Sobrescrever a data da ultima alteracao | -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 realteracao por 7 dias apos uma mudanca, avisa 7 dias antes, desabilita a conta 30 dias apos a expiracao."
Forcar alteracao no proximo login
$ sudo chage -d 0 alice
Redefinir a data da ultima alteracao para a epoca faz com que conte como "ja expirada", forcando uma alteracao de senha no proximo login.
Para definir cada item interativamente, execute sudo chage alice sem opcoes. Os valores atuais aparecem entre [ ] e voce pode mante-los pressionando Enter.
Como definir uma data de expiracao da conta?
Conclusao: Use
chage -E datepara definir a expiracao da propria conta. Use para usuarios com prazo fixo ou contas temporarias 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 e independente da expiracao de senha (-M). Quando voce precisa parar o login de forma confiavel no final de um contrato, use -E (expiracao da conta), nao -M (expiracao da senha).
Erros comuns e como diagnostica-los
Conclusao: A maioria dos problemas "nao consegue alterar" ou "bloqueado imediatamente" vem da configuracao de dias minimos,
-d 0ou um erro de data de expiracao. Sempre confirme o estado comchage -l.
Nao consegue alterar a senha ainda
You must wait longer to change your password
A configuracao -m (dias minimos) esta em efeito. Como admin, voce pode alterar imediatamente com sudo passwd.
Bloqueado logo apos a configuracao
Verifique se chage -d 0 combinado com -M/-I criou uma situacao de "expirar agora + zero graca".
$ sudo chage -l alice
Nao aplique envelhecimento a senha do root
Aplicar envelhecimento a contas de sistema ou root arrisca bloquear voce mesmo. Restrinja a politica a contas de usuario regulares e interativas.
O que nao fazer
- Aplicar envelhecimento descuidadamente ao
rootou contas de servico - Confundir
chage -Ecompasswd -l(o primeiro e a conta, o segundo e a senha) - Deixar configuracoes sem verificacao em vez de confirmar com
chage -l