Introdução
O comando "su" (substitute user) no Linux é uma ferramenta poderosa que permite aos usuários alternar temporariamente para uma conta de usuário diferente, geralmente o usuário root, para realizar tarefas administrativas. No entanto, falhas de autenticação com o su podem ocorrer, levando à negação de acesso e a potenciais riscos de segurança. Este tutorial irá guiá-lo pelo processo de solução de problemas de falhas de autenticação com o su no Linux, abordando causas comuns, configurações e melhores práticas para um uso seguro.
Entendendo o Comando Su e o Uso Básico
Nesta etapa, você aprenderá como o comando su no Linux permite que os usuários alternem sua identidade atual para outro usuário. Isso é particularmente útil para realizar tarefas administrativas que exigem privilégios elevados.
Vamos explorar o uso básico do comando su e entender como ele funciona.
Uso Básico do Su
Abra um terminal no seu ambiente de VM do LabEx. Você pode usar o comando su com a seguinte sintaxe:
su [options] [username]
Se você executar su sem especificar um nome de usuário, ele assume o usuário root por padrão:
su
O comando tem root como alvo, mas o Ubuntu normalmente bloqueia a autenticação por senha de root. Uma falha de autenticação aqui é esperada. Não habilite o login por senha de root nem altere a conta da plataforma; todos os testes de login bem-sucedido abaixo usam usuários descartáveis do laboratório.
Vamos criar um usuário de teste para praticar:
sudo adduser testuser
Insira as informações necessárias quando solicitado. Apenas para esta conta de teste descartável, use DemoUser123! como senha de prática. Nunca altere a senha de labex nem sua associação ao grupo de sudo.
Agora, vamos tentar alternar para este usuário:
su testuser
Quando solicitado, insira a senha que você criou para o testuser. Uma vez autenticado, seu prompt mudará, indicando que você agora está operando como testuser.
Para verificar se você alternou de usuário com sucesso, execute:
whoami
A saída deve mostrar:
testuser
Para retornar ao seu usuário original, basta digitar:
exit
Usando o Su com Opções
O comando su suporta várias opções. A mais comum é a opção - (hífen), que fornece um ambiente de login completo:
su - testuser
Isso não apenas alterna a identidade do usuário, mas também:
- Muda para o diretório home do usuário alvo
- Configura as variáveis de ambiente do usuário alvo
- Fornece um shell de login
Tente este comando e observe as diferenças:
pwd
A saída deve mostrar o diretório home do testuser:
/home/testuser
Saia do testuser digitando:
exit
Este entendimento básico do comando su nos ajudará a solucionar falhas de autenticação nas próximas etapas.
Falhas Comuns de Autenticação com Su e suas Causas
Nesta etapa, você criará e inspecionará falhas comuns de autenticação com o su. Entender essas falhas é o primeiro passo para resolvê-las.
Testando Falhas de Autenticação
Vamos criar intencionalmente algumas falhas de autenticação para entendê-las melhor.
Primeiro, tente alternar para o testuser com uma senha incorreta:
su testuser
Insira uma senha incorreta. Você verá uma mensagem de erro semelhante a:
su: Authentication failure
Em seguida, tente alternar para um usuário inexistente:
su nonexistentuser
Você verá uma mensagem de erro como:
su: user nonexistentuser does not exist
Causas Comuns de Falhas de Autenticação
1. Senha Incorreta
A causa mais comum de falha de autenticação é simplesmente inserir a senha errada. Isso pode acontecer devido a:
- Erros de digitação
- Caps Lock ativado
- Esquecimento da senha
2. Restrições de Conta
Algumas contas podem estar configuradas para impedir o login ou ter senhas expiradas:
Vamos modificar nosso usuário de teste para demonstrar isso:
sudo usermod -L testuser
A opção -L bloqueia a autenticação por senha da conta descartável testuser. Agora tente:
su testuser
Você verá uma falha de autenticação mesmo se inserir a senha correta.
A opção -U remove esse bloqueio de senha. Desbloqueie apenas esta conta de teste com:
sudo usermod -U testuser
3. Problemas de Configuração do PAM
O sistema PAM (Pluggable Authentication Modules) controla a autenticação no Linux. Problemas com a configuração do PAM podem causar falhas no su.
Vamos examinar a configuração do PAM para o comando su:
cat /etc/pam.d/su
Este arquivo contém a configuração do PAM específica para o comando su. Procure por linhas que possam restringir o acesso, como:
auth required pam_wheel.so
Esta linha, se descomentada, restringiria o acesso ao su apenas para membros do grupo wheel.
4. Problemas de Permissão com o Binário do Su
O arquivo binário do comando su deve ter as permissões corretas para funcionar adequadamente:
ls -l $(which su)
A saída deve mostrar algo como:
-rwsr-xr-x 1 root root 71816 Apr 18 2022 /usr/bin/su
O s nas permissões indica que o bit setuid está definido, permitindo que o programa seja executado com os privilégios do seu proprietário (root) em vez do usuário que o executa.
5. Examinando Logs de Autenticação
Ao solucionar falhas de autenticação nesta VM do LabEx, verifique os registros de login falhos com o lastb:
sudo lastb | head
Este comando lê o /var/log/btmp e exibe tentativas recentes de autenticação falhas, incluindo tentativas de su falhas quando registradas pelo sistema.
Por exemplo, uma tentativa de su falha pode mostrar uma entrada que inclui o usuário alvo e a sessão do terminal.
Entender essas causas comuns de falhas de autenticação com o su o ajudará a identificar e resolver problemas de forma mais eficaz nas próximas etapas.
Configurando o Controle de Acesso para o Comando Su
Nesta etapa, você testará uma regra de grupo do PAM com uma conta de destino descartável. Você não habilitará o login por senha de root nem restringirá o acesso à plataforma.
Prepare as Contas Descartáveis
Comece no shell original de labex. Confirme a identidade atual antes de usar sudo:
whoami
O resultado deve ser labex. Crie um segundo usuário de origem e um destino separado. Em seguida, defina senhas apenas para essas contas descartáveis:
sudo adduser --disabled-password --gecos '' testuser2
sudo adduser --disabled-password --gecos '' su-lab-target
printf '%s\n' 'testuser2:DemoOther123!' 'su-lab-target:DemoTarget123!' | sudo chpasswd
sudo groupadd sugroup
sudo usermod -aG sugroup testuser
Apenas testuser é membro de sugroup. Novos shells de login carregarão essa associação. A senha do destino é DemoTarget123! para os testes dos dois usuários de origem.
Aplique uma Regra PAM Específica para o Destino
O PAM controla a autenticação do su por meio de /etc/pam.d/su. A preparação salvou os bytes originais desse arquivo em /opt/labex/su-demo. O prefixo gerenciado abaixo aplica uma verificação de grupo apenas quando o destino é su-lab-target. A primeira regra ignora a regra seguinte para qualquer outro destino, incluindo labex. use_uid verifica a identidade real de quem executa o comando, e group=sugroup indica o grupo permitido.
sudo python3 - <<'PY'
from pathlib import Path
original = Path('/opt/labex/su-demo/pam-su.original').read_text()
prefix = """## Lab-only rule for su-lab-target
auth [success=1 default=ignore] pam_succeed_if.so quiet user != su-lab-target
auth required pam_wheel.so use_uid group=sugroup
"""
Path('/etc/pam.d/su').write_text(prefix + original)
PY
As regras originais do PAM permanecem depois desse prefixo. A associação ao grupo não substitui a autenticação por senha. Não adicione labex ao grupo de demonstração nem edite qualquer configuração de SSH, sudo ou da conta da plataforma.
Teste um Usuário Fora do Grupo
Alterne de labex para testuser2, usando DemoOther123!:
su - testuser2
Nesse shell, tente acessar o destino delimitado usando sua senha correta DemoTarget123!:
su - su-lab-target
Isso deve falhar com um erro de autenticação porque testuser2 não pertence a sugroup. Uma tentativa de su que falha não cria um novo shell. Execute exit uma vez para retornar a labex:
exit
whoami
Confirme que whoami informa labex antes de continuar.
Teste um Usuário Dentro do Grupo
Alterne para testuser usando sua senha DemoUser123!, definida na etapa 1:
su - testuser
id
su - su-lab-target
Insira DemoTarget123! para o destino. Essa troca deve funcionar. Confirme a identidade do destino:
whoami
A saída deve ser su-lab-target. Dois shells foram abertos, portanto execute exit duas vezes: primeiro para retornar a testuser, depois a labex:
exit
exit
whoami
Confirme que whoami informa labex. Nunca execute o comando de restauração no shell de um usuário descartável.
Restaure a Política Original
A partir de labex, restaure a configuração salva e compare-a com a original:
sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su
sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su
Uma comparação bem-sucedida não exibe nenhuma saída. O grupo e os usuários de demonstração permanecem disponíveis para diagnóstico, enquanto su volta a usar sua política original.
Solucionando e Resolvendo Falhas de Autenticação com Su
Nesta etapa, você usará um processo sistemático para solucionar e resolver falhas de autenticação com o su.
Diagnosticando Falhas de Autenticação
Ao encontrar uma falha de autenticação com o su, siga estas etapas sistemáticas para diagnosticar o problema:
Etapa 1: Verifique a Mensagem de Erro
A mensagem de erro pode fornecer pistas valiosas sobre a natureza da falha. Mensagens de erro comuns incluem:
su: Authentication failure- Normalmente indica uma senha incorreta.su: user username does not exist- A conta de usuário especificada não existe.su: permission denied- Restrições de controle de acesso estão impedindo a operação.
Etapa 2: Verifique a Conta de Usuário
Certifique-se de que a conta de usuário de destino existe e não está bloqueada:
grep testuser /etc/passwd
Isso deve exibir a entrada de testuser no arquivo de senhas, confirmando que a conta existe.
Verifique se a conta está bloqueada:
sudo getent shadow testuser | cut -d: -f2 | cut -c1
Isso mostra apenas o primeiro caractere do campo de senha da conta descartável, não o hash da senha. Um ! inicial significa que a autenticação por senha está bloqueada.
Etapa 3: Verifique Restrições de Controle de Acesso
Como aprendemos na etapa anterior, a configuração do PAM pode restringir o acesso ao su. Verifique tais restrições:
grep -v "^#" /etc/pam.d/su | grep pam_wheel
Se isso retornar uma linha contendo pam_wheel.so, o acesso ao su pode estar restrito a membros de um grupo específico.
Etapa 4: Examine os Logs do Sistema
Os registros de login falhos podem fornecer informações úteis sobre falhas de autenticação:
sudo lastb | head
Procure entradas relacionadas às suas tentativas falhas de su, que podem fornecer contexto adicional.
Resolvendo Falhas Comuns de Autenticação com Su
Agora, vamos abordar falhas comuns de autenticação com o su e como resolvê-las:
1. Senha Incorreta
Se você está inserindo a senha correta, mas ainda obtém falhas de autenticação, a senha pode precisar ser redefinida:
printf '%s\n' 'testuser:DemoUser123!' | sudo chpasswd
Isso redefine apenas a senha do usuário descartável testuser para o valor de prática conhecido; não altera labex nem root.
2. Conta Bloqueada
Se a conta estiver bloqueada, desbloqueie-a:
sudo usermod -U testuser
3. Restrições de Controle de Acesso
Se as restrições de controle de acesso estiverem impedindo o acesso ao su, você pode:
a. Adicionar o usuário ao grupo necessário:
sudo usermod -aG sugroup testuser2
Isso adiciona testuser2 a sugroup.
b. Para este laboratório, remover apenas a política de demonstração restaurando o arquivo original salvo:
sudo cp -p /opt/labex/su-demo/pam-su.original /etc/pam.d/su
Isso restaura exatamente a política original de su, em vez de desativar regras arbitrárias de autenticação.
4. Problemas de Permissão de Arquivo
Inspecione as permissões do binário su sem alterar o binário da plataforma:
ls -l "$(command -v su)"
O bit setuid esperado aparece como s na posição de execução do proprietário. Se o binário da plataforma estiver danificado, use uma nova VM em vez de alterar suas permissões.
Testando as Correções
Após aplicar as correções, teste se a autenticação com o su funciona corretamente:
su - testuser
Insira a senha de testuser quando solicitado. Se funcionar, você deverá estar conectado como testuser.
Execute whoami para confirmar testuser e, em seguida, execute exit uma vez para retornar a labex. Não use o login por senha de root como teste de sucesso: o login na conta descartável é o caso positivo.
Essas etapas de diagnóstico e correções abordam as falhas de autenticação com o su mais comuns. Ao diagnosticar e resolver esses problemas sistematicamente, você pode garantir que o comando su funcione corretamente em seu sistema.
Melhores Práticas para o Uso Seguro do Su
Nesta etapa, você revisará o uso seguro de privilégios e confirmará que a demonstração deixou o acesso à plataforma inalterado.
Prefira Sudo para Comandos Administrativos Individuais
Sudo pode conceder e registrar ações administrativas individuais sem compartilhar a senha de root. No seu shell de labex, liste o diretório home de root sem iniciar um shell de login de root:
sudo ls /root
Mantenha a política de sudo existente da plataforma. Você pode inspecionar os comandos permitidos sem alterar a política:
sudo -l
Mantenha as Alterações de Autenticação Delimitadas
Em sistemas de produção, os administradores gerenciam o login de root, a qualidade das senhas e a política de autenticação por meio de fluxos de configuração aprovados. Este exercício não altera as configurações de SSH, a senha de labex nem a associação de labex a grupos. Uma política de senhas fortes ou a autenticação multifator exige sua própria implementação; nenhuma delas é configurada por este tutorial.
Confirme que a política temporária de su foi removida:
sudo cmp /opt/labex/su-demo/pam-su.original /etc/pam.d/su
A ausência de saída significa que a política corresponde ao original salvo.
Audite Tentativas de Autenticação Falhas
Use o banco de dados de logins falhos para investigar tentativas malsucedidas:
sudo lastb | head
Isso lê /var/log/btmp; não mostra todas as sessões de su bem-sucedidas. Interprete apenas os registros realmente gravados pelo sistema e investigue falhas repetidas em um ambiente de produção.
Use um Ambiente de Login e Retorne Explicitamente
A opção com hífen inicia o ambiente de login do usuário de destino. Use a senha DemoUser123! de testuser:
su - testuser
whoami
exit
whoami
As duas verificações de identidade devem mostrar testuser e depois labex. O exit fecha apenas o shell criado por su. A VM mantém seu login original na plataforma, o acesso a sudo e a política de su.
Resumo
Neste laboratório, exploramos o comando su no Linux e aprendemos como solucionar falhas comuns de autenticação. Abordamos:
- Entendimento do uso básico do comando
sue como ele funciona - Identificação de causas comuns de falhas de autenticação com o su, incluindo senhas incorretas, restrições de conta e problemas de configuração do PAM
- Configuração do controle de acesso para o comando
supara aumentar a segurança - Solução e resolução de falhas de autenticação com o su através de diagnóstico sistemático
- Implementação de melhores práticas para o uso seguro do su, incluindo o uso do sudo quando possível, configuração de políticas de senha robustas e auditoria regular do uso do su
Ao aplicar essas técnicas e melhores práticas, você pode garantir que o comando su funcione corretamente enquanto mantém a segurança do seu sistema Linux. Lembre-se de que o gerenciamento adequado da autenticação é um aspecto crucial da administração e segurança do sistema.



