passwd e chage: Senha e Envelhecimento de Conta

passwd e chage: Senha e Envelhecimento de Conta

O Que Voce Vai Aprender

  • A diferenca de funcoes entre passwd e chage
  • Como alterar senhas, bloquear contas e verificar status com confianca
  • Como configurar envelhecimento de senha de acordo com sua politica
  • Como ler /etc/shadow para 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: passwd opera no "valor" da senha, enquanto chage opera 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 via sudo 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 -l para bloquear, passwd -u para desbloquear e passwd -S para 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 definida
  • L: bloqueada
  • NP: 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 username para 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 -M para a idade maxima, -m para a minima, -W para dias de aviso e -I para 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 date para 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 0 ou um erro de data de expiracao. Sempre confirme o estado com chage -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 root ou contas de servico
  • Confundir chage -E com passwd -l (o primeiro e a conta, o segundo e a senha)
  • Deixar configuracoes sem verificacao em vez de confirmar com chage -l

Resumo e Proximas Leituras