passwd e chage: Senha e Envelhecimento de Conta

passwd e chage: Senha e Envelhecimento de Conta

O Que Você Vai Aprender

  • A diferença de funções entre passwd e chage
  • 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/shadow para 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: 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 é 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 via sudo 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 -l para bloquear, passwd -u para desbloquear e passwd -S para 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á 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 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 username para 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 -M para a idade máxima, -m para a mínima, -W para dias de aviso e -I para 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 date para 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 0 ou um erro de data de expiração. Sempre confirme o estado com chage -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 root ou contas de serviço
  • Confundir chage -E com passwd -l (o primeiro é a conta, o segundo é a senha)
  • Deixar configurações sem verificação em vez de confirmar com chage -l

Resumo e Próximas Leituras