Limitando o Acesso sudo com o Arquivo sudoers
Nesta etapa, você aprenderá como restringir os privilégios sudo de um usuário a comandos específicos usando o arquivo sudoers. Isso implementa o princípio do menor privilégio (principle of least privilege), que afirma que os usuários devem ter apenas os privilégios mínimos necessários para realizar suas tarefas.
Compreendendo o Arquivo sudoers
O arquivo /etc/sudoers controla quem pode usar o comando sudo e quais comandos eles podem executar. Este arquivo nunca deve ser editado diretamente com um editor de texto regular, pois erros de sintaxe podem bloqueá-lo do sistema. Em vez disso, use sempre o comando visudo, que verifica erros de sintaxe antes de salvar.
Editando o Arquivo sudoers
Para editar o arquivo sudoers com segurança, use o comando visudo:
sudo visudo
Isso abrirá o arquivo sudoers no editor padrão (geralmente nano ou vi).
Compreendendo a Sintaxe sudoers
A sintaxe básica para uma entrada sudo no arquivo sudoers é:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Onde:
user_or_group: O usuário ou grupo ao qual esta regra se aplica
host: O nome do host onde esta regra se aplica (geralmente ALL)
run_as_user: O usuário como o qual os comandos serão executados (geralmente ALL, significando root)
run_as_group: O grupo como o qual os comandos serão executados (pode ser omitido)
NOPASSWD: Tag opcional que permite que os comandos sejam executados sem inserir uma senha
commands: Os comandos específicos que podem ser executados com sudo
Adicionando Acesso sudo Restrito
Role até o final do arquivo e adicione a seguinte linha para conceder ao trusted_advisor permissões para executar apenas os comandos cp e mv sem senha:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Para salvar o arquivo no nano, pressione Ctrl+O, depois Enter e, para sair, pressione Ctrl+X.
Testando o Acesso sudo Restrito
Agora, vamos testar se o acesso sudo restrito funciona como esperado. Primeiro, vamos criar um arquivo de teste no diretório atual:
echo "This is a test file" > important_file.txt
Agora, mude para o usuário trusted_advisor:
su - trusted_advisor
Insira a senha quando solicitado.
Tente copiar o arquivo para o diretório raiz, o que deve ser permitido:
sudo cp /home/labex/project/important_file.txt /root/
Isso deve ser bem-sucedido sem pedir uma senha.
Agora, tente executar um comando que não está na lista permitida, como cat:
sudo cat /root/important_file.txt
Você deve obter um erro de permissão negada porque cat não está na lista permitida de comandos.
Finalmente, verifique se o arquivo foi copiado para o diretório raiz:
sudo ls /root/
Você deve ver important_file.txt na saída.
Saia da sessão do usuário trusted_advisor:
exit
Removendo o Arquivo de Teste
Para limpar, remova o arquivo de teste:
sudo rm important_file.txt