03.12.2025

Autenticação de Senha no Linux: Ferramentas, Algoritmos e PAM Explicado

Os sistemas operacionais modernos deixaram de ser janelas de terminal de um único usuário com um shell. Agora, eles são sistemas operacionais multitarefa e multiusuário com interface gráfica e a capacidade de processar dados em paralelo. Em razão disso, há a necessidade de organizar o trabalho entre os usuários: sua autorização e autenticação. Neste artigo, vamos analisar o algoritmo de autenticação no Linux e como você pode gerenciar um deles.

O que é PAM e o que as senhas do Linux têm a ver com isso?

PAM (Pluggable Authentication Module) é um único serviço que integra provedores de autenticação, permitindo que você escolha qualquer cenário e a ordem em que eles são usados. Eles são considerados métodos de sistema através de /etc/passwd, /etc/shadow, onde ele compara o usuário e sua senha inserida na forma de um hash. Pode ser LDAP, Kerberos, NTLM, SSH e outros.

Captura de tela nº 1 — Esquema PAM

O funcionamento é que o usuário solicita a execução de um arquivo como uma chamada de sistema para o kernel do OS. Após isso, o módulo PAM intercepta e processa a solicitação de acordo com o script prescrito para trabalhar com o serviço, determinando o acesso do usuário. Novos provedores de autenticação podem ser conectados instalando pacotes e bibliotecas adequadas.

Classicamente, a verificação de senha do sistema é usada no diretório /etc/shadow utilizando o módulo pam_unix.so. O usuário insere os dados de autenticação, eles são convertidos em hash e comparados com o hash no diretório. Um exemplo de entrada é:

user:$6$JdjJd8...$:18355:0:99999:7:::

Fica claro que user representa o login do usuário e o valor $6$JdjJd8...$ é o hash da senha, mas o que vem depois disso? Isso são os metadados, onde 18355 é a data da última alteração da senha. Os próximos campos são responsáveis pela expiração mínima/máxima dos dados de autenticação, avisos antes da expiração e bloqueios. O módulo acessa o arquivo e lê todos esses valores, então retorna uma resposta verdadeira ou falsa para o PAM.

Vamos dar uma olhada nas ferramentas que permitem definir configurações de senha no arquivo /etc/shadow.

Ferramentas de Senha no Linux

A ferramenta de senha mais popular é passwd. Sua funcionalidade simples inclui a alteração, bloqueio e desbloqueio, validade de senha e exclusão. Vamos criar um novo usuário e testar todos os recursos da ferramenta nele!

useradd koldek -p 123321

Captura de tela nº 2 — Nova conta

Na utilidade useradd, a opção -p permite definir a senha em um único comando e usá-la para autenticação.

Se você não tem recursos suficientes, pode realizar ações em servidores poderosos na nuvem. O Serverspace oferece servidores VPS isolados para uso comum e virtualizado.

Captura de tela nº 3 — Criar servidor

Vamos voltar ao terminal e supor que esquecemos a senha. Nesse caso, será necessário redefini-la via usuários no grupo sudo ou root:

sudo passwd koldek

Captura de tela nº 4 — Nova senha

Ótimo, agora não vamos mais esquecer dela! Mas, e se o funcionário sair, o dispositivo não estiver conectado a um controlador de domínio e uma conta separada tenha sido criada para o funcionário? Uma das opções é bloquear o login na conta, vamos fazer isso com o comando:

passwd -l koldek

Vamos mudar o usuário para o mesmo koldek2 pré-criado e tentar autenticar:

Captura de tela nº 5 — Senha bloqueada

Ocorre um erro, sem detalhes sobre ele. O comando su acessou o terminal virtual, após o qual o módulo PAM gerou uma solicitação de autenticação sob o novo usuário koldek2. Onde o registro foi verificado e foi indicado em /etc/shadow que a autenticação sob esse registro não é possível. O PAM percorreu todo o script e retornou um erro.

Vamos imaginar que precisamos fazer login como esse usuário. Vamos mudar a senha e desbloquear a conta:

passwd koldek && passwd -u koldek

Em seguida, vamos verificar se a autenticação funciona, faça login no koldek via koldek2 e execute o comando:

whoami

Captura de tela nº 6 — Desbloqueio

Ótimo, a última entrada indica que autenticamos com sucesso no koldek no dispositivo. Você pode impedir o usuário de ser autenticado simplesmente removendo sua senha com o comando:

passwd -d koldek

Vamos considerar outro caso em que seu usuário está usando a mesma senha há muito tempo e você precisa alterá-la. Para isso, vamos especificar uma alteração forçada durante a autenticação:

passwd -e koldek

Ou especifique manualmente a data de expiração da senha do usuário:

Captura de tela nº 7 — Forçar expiração

passwd -X 90 koldek

Captura de tela nº 8 — Data de expiração da senha

E o comando com a opção -S permite visualizar o status da senha do usuário e verificar se as configurações foram aplicadas. De maneira geral, essas são todas as opções e recursos da autenticação local no dispositivo via o módulo pam_unix.so. Soluções mais complexas, como autenticação TOTP ou LDAP, serão abordadas nos próximos artigos!

A autenticação no Linux é um sistema flexível e poderoso, onde o PAM (Pluggable Authentication Modules) desempenha um papel central. Integrando vários provedores de autenticação e trabalhando com o arquivo /etc/shadow, o PAM garante que a gestão de senhas seja segura e adaptável. Com ferramentas simples como passwd, os administradores podem gerenciar credenciais de usuários, impor políticas de senha, bloquear ou desbloquear contas e manter a higiene adequada de segurança. Compreender como a autenticação funciona no nível do sistema é essencial tanto para a proteção da infraestrutura quanto para o gerenciamento eficaz dos usuários.

FAQ

  1. O que é PAM no Linux?
    PAM (Pluggable Authentication Module) é uma estrutura que permite que sistemas Linux integrem diferentes provedores de autenticação, como senhas locais, LDAP, Kerberos ou SSH.
  2. Onde as senhas dos usuários do Linux são armazenadas?
    Os hashes de senha e os metadados relacionados são armazenados no arquivo /etc/shadow, que só pode ser acessado por usuários privilegiados (root).
  3. Qual o papel do módulo pam_unix.so?
    O módulo pam_unix.so verifica as senhas locais dos usuários comparando o valor inserido (após hashing) com o hash armazenado em /etc/shadow.
  4. Como posso alterar a senha de um usuário no Linux?
    Você pode usar o comando passwd username para alterar a senha de um usuário. Exemplo:
    sudo passwd koldek

    Como bloquear ou desbloquear uma conta de usuário no Linux?
    Bloquear: passwd -l username
    Desbloquear: passwd -u username

  5. Como forçar um usuário a mudar sua senha no próximo login?
    Você pode expirar a senha dele com:
    passwd -e username

    Isso exigirá que o usuário defina uma nova senha no próximo login.

  6. Posso definir políticas de expiração de senha no Linux?
    Sim, por exemplo:
    passwd -X 90 username

    Isso forçará a senha a expirar após 90 dias.

  7. O que acontece se eu remover a senha de um usuário?
    Executar passwd -d username remove a senha, o que impede o login com autenticação por senha, a menos que outro método (como chave SSH) seja configurado.
  8. A autenticação local com /etc/shadow é segura?
    Sim, desde que o arquivo esteja protegido e algoritmos de hash fortes (como SHA-512) sejam usados. No entanto, para ambientes corporativos, métodos adicionais como LDAP ou autenticação multifatorial são recomendados.