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.

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
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.

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
Ó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 koldekVamos mudar o usuário para o mesmo koldek2 pré-criado e tentar autenticar:

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 koldekEm seguida, vamos verificar se a autenticação funciona, faça login no koldek via koldek2 e execute o comando:
whoami
Ó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 koldekVamos 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 koldekOu especifique manualmente a data de expiração da senha do usuário:

passwd -X 90 koldek
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
- 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. - 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). - 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. - 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 koldekComo bloquear ou desbloquear uma conta de usuário no Linux?
Bloquear: passwd -l username
Desbloquear: passwd -u username - Como forçar um usuário a mudar sua senha no próximo login?
Você pode expirar a senha dele com:passwd -e usernameIsso exigirá que o usuário defina uma nova senha no próximo login.
- Posso definir políticas de expiração de senha no Linux?
Sim, por exemplo:passwd -X 90 usernameIsso forçará a senha a expirar após 90 dias.
- 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. - 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.