Introdução
Em sistemas Linux, gerenciar permissões de usuários e controle de acesso é fundamental para a administração e a segurança do sistema. O comando sudo, abreviação de "superuser do", permite que usuários autorizados executem comandos com privilégios elevados, normalmente os do superusuário ou da conta root.
Neste laboratório, você aprenderá a conceder e restringir privilégios a usuários em um ambiente Linux. Você verá como adicionar usuários ao grupo sudo para que possam realizar tarefas administrativas e como limitar as permissões deles a comandos específicos. Essas habilidades são essenciais para manter sistemas seguros, nos quais o acesso a operações sensíveis precisa ser controlado com cuidado.
Noções básicas de gerenciamento de usuários e sudo
Nesta etapa, você aprenderá sobre o gerenciamento de usuários no Linux e os fundamentos do comando sudo. Você criará um usuário e verá como conceder a ele privilégios administrativos.
O que é sudo?
O comando sudo permite que usuários autorizados executem comandos com os privilégios de segurança de outro usuário, normalmente os do superusuário (root). Assim, é possível realizar tarefas administrativas sem entrar no sistema como root, o que é considerado uma boa prática de segurança.
Criar um usuário
Comece criando uma nova conta de usuário. Abra o terminal e execute o comando a seguir:
sudo adduser trusted_advisor
O sistema solicitará uma senha e algumas informações opcionais para o novo usuário. Neste laboratório, você pode definir uma senha simples, como password123, e deixar os outros campos em branco pressionando Enter.
A saída deve ser semelhante a esta:
Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
Verificar as informações do usuário
Para confirmar que o usuário foi criado, consulte o conteúdo do arquivo /etc/passwd:
grep trusted_advisor /etc/passwd
A saída deve mostrar uma linha com as informações do usuário.
Conceder privilégios de sudo
Para conceder privilégios de sudo a um usuário, adicione-o ao grupo sudo. No Ubuntu, os integrantes desse grupo podem usar o comando sudo. Execute:
sudo usermod -aG sudo trusted_advisor
Esse comando adiciona (-a) o usuário trusted_advisor ao grupo sudo (-G sudo). Agora, o usuário poderá executar comandos com privilégios administrativos.
Verificar o acesso ao sudo
Para confirmar que o novo usuário tem acesso ao sudo, troque para essa conta e tente listar o conteúdo do diretório /root, que normalmente só pode ser acessado pelo usuário root:
su - trusted_advisor
Quando solicitado, informe a senha definida para esse usuário. Em seguida, execute:
sudo ls /root
O sistema solicitará a senha novamente, pois é a primeira vez que o usuário usa o sudo. Depois de informá-la, você deverá ver o conteúdo do diretório /root. Isso confirma que o usuário tem privilégios de sudo.
Por fim, encerre a sessão do usuário trusted_advisor para voltar ao usuário original:
exit
Limitar o acesso ao sudo com o arquivo sudoers
Nesta etapa, você aprenderá a restringir os privilégios de sudo de um usuário a comandos específicos usando o arquivo sudoers. Isso aplica o princípio do menor privilégio: os usuários devem ter apenas os privilégios mínimos necessários para realizar suas tarefas.
Entender o arquivo sudoers
O arquivo /etc/sudoers controla quem pode usar o comando sudo e quais comandos essas pessoas podem executar. Nunca edite esse arquivo diretamente com um editor de texto comum, pois erros de sintaxe podem impedir seu acesso ao sistema. Em vez disso, use sempre o comando visudo, que verifica se há erros de sintaxe antes de salvar.
Remover o acesso amplo concedido pelo grupo
As permissões de sudo concedidas por regras que correspondem ao usuário são combinadas. Adicionar uma regra para comandos específicos não cancela o acesso total concedido pelo grupo sudo. Na sessão original de labex, remova primeiro esse acesso amplo:
sudo deluser trusted_advisor sudo
Para testar as alterações na associação a grupos, abra uma nova sessão com su - trusted_advisor.
Editar o arquivo sudoers
Para editar o arquivo sudoers com segurança, use o comando visudo:
sudo EDITOR=vim visudo
Esse comando abre explicitamente o Vim, portanto as teclas de edição e salvamento descritas abaixo correspondem a esse editor. Pressione G para ir até a última linha e, em seguida, o para abrir uma nova linha no modo de inserção.
Entender a sintaxe do sudoers
A sintaxe básica de uma entrada de 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 a regra se aplicahost: o nome do host ao qual a regra se aplica (normalmente ALL)run_as_user: o usuário como o qual os comandos serão executados (rootapenas para root ouALLpara qualquer usuário)run_as_group: o grupo como o qual os comandos serão executados (pode ser omitido)NOPASSWD: tag opcional que permite executar comandos sem informar uma senhacommands: os comandos específicos que podem ser executados com sudo
Conceder acesso restrito ao sudo
Vá até o fim do arquivo e adicione a linha a seguir para permitir que trusted_advisor execute apenas os comandos cp e mv sem senha:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Adicione também esta linha separada para habilitar um log dedicado do sudo neste contêiner, que não disponibiliza o arquivo /var/log/auth.log:
Defaults logfile="/var/log/sudo.log"
Pressione Esc, digite :wq e pressione Enter para salvar e sair do Vim. Se visudo indicar um erro de sintaxe, pressione e para voltar à edição e corrigir o erro. Para descartar as alterações no Vim, pressione Esc, digite :q! e pressione Enter.
Este exercício serve apenas para praticar a correspondência de comandos: conceder acesso irrestrito como root a cp ou mv pode sobrescrever arquivos sensíveis e não é uma restrição segura para uso em produção.
Testar o acesso restrito ao sudo
Agora, teste se o acesso restrito ao sudo funciona como esperado. Primeiro, volte ao espaço de trabalho do laboratório e crie um arquivo de teste:
cd /home/labex/project
echo "This is a test file" > important_file.txt
Agora, troque para o usuário trusted_advisor:
su - trusted_advisor
Informe a senha quando solicitado.
Tente copiar o arquivo para o diretório root, uma operação que deve ser permitida:
sudo cp /home/labex/project/important_file.txt /root/
O comando deve ser executado com sucesso sem solicitar uma senha.
Agora, tente executar um comando que não está na lista de permissões, como cat:
sudo -n cat /root/important_file.txt
O comando deve falhar porque cat não está autorizado. A opção -n impede a solicitação de senha; a mensagem de bloqueio pode informar que uma senha é necessária ou que o comando não é permitido. O comando não deve exibir o conteúdo do arquivo.
Encerre a sessão do usuário restrito antes de verificar a cópia, pois ls também está fora da lista de comandos permitidos:
exit
Como labex, confirme que o arquivo foi copiado:
sudo ls /root/
A saída deve incluir important_file.txt.
Remover o arquivo de teste
Para limpar os arquivos de teste, remova-os:
sudo rm /home/labex/project/important_file.txt /root/important_file.txt
Entender os logs do sudo e as considerações de segurança
Nesta etapa, você aprenderá sobre os logs do sudo e as boas práticas de segurança. Monitorar o uso do sudo é importante para a segurança e para auditorias.
Logs do sudo
Quando usuários executam comandos com sudo, essas ações são registradas. Esses registros formam uma trilha de auditoria que pode ser útil para monitorar a segurança e solucionar problemas.
Instalações do Ubuntu com um serviço de registro do sistema costumam usar /var/log/auth.log. Este contêiner usa, em vez disso, o log dedicado configurado na Etapa 2. Como labex, consulte as atividades recentes do sudo:
sudo tail -n 10 /var/log/sudo.log
Esse comando exibe as 10 entradas mais recentes relacionadas ao sudo. A saída deve incluir registros de data e hora, nomes de usuário e os comandos executados com sudo.
Boas práticas de segurança para sudo
Veja algumas boas práticas para gerenciar privilégios de sudo:
Princípio do menor privilégio: os usuários devem ter apenas os privilégios mínimos necessários para realizar suas tarefas.
Use comandos específicos: em vez de conceder acesso total ao sudo, especifique exatamente quais comandos o usuário pode executar.
Exija senhas: para operações sensíveis, configure o sudo para solicitar a senha dos usuários.
Faça auditorias regularmente: revise periodicamente os logs do sudo e o arquivo sudoers para confirmar que estão configurados corretamente.
Remova acessos desnecessários: quando os usuários não precisarem mais de privilégios elevados, remova-os prontamente do grupo sudo.
Remover o acesso ao sudo
Na Etapa 2, você já removeu trusted_advisor do grupo sudo. Para revogar o acesso restante a comandos específicos, remova também a regra correspondente:
sudo EDITOR=vim visudo
Pressione Esc, digite /^trusted_advisor e pressione Enter para localizar a regra. Pressione dd para excluir a linha inteira:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Mantenha a linha Defaults logfile. Digite :wq e pressione Enter para salvar e sair. Verifique a associação a grupos:
groups trusted_advisor
A saída não deve incluir sudo.
Testar a revogação do acesso ao sudo
Vamos confirmar que o usuário não consegue mais executar comandos com sudo:
su - trusted_advisor
Informe a senha quando solicitado.
Tente executar um comando com sudo:
sudo -n ls /root
Agora, você deverá ver a mensagem trusted_advisor is not in the sudoers file. O comando deve falhar.
Encerre a sessão do usuário trusted_advisor:
exit
Restaurar o acesso ao sudo
Para concluir este laboratório, adicione novamente o usuário ao grupo sudo:
sudo usermod -aG sudo trusted_advisor
Confirme que o usuário voltou a fazer parte do grupo sudo:
groups trusted_advisor
Agora, a saída deve incluir "sudo" na lista de grupos.
Resumo
Neste laboratório, você aprendeu técnicas essenciais de gerenciamento de usuários e controle de privilégios no Linux. Na prática, você trabalhou com os seguintes conceitos e operações:
Criar usuários: você aprendeu a criar novas contas de usuário com o comando
adduser.Conceder privilégios de sudo: você viu como conceder recursos administrativos a usuários adicionando-os ao grupo sudo.
Restringir o acesso ao sudo: você praticou a aplicação do princípio do menor privilégio, limitando o acesso de um usuário ao sudo a comandos específicos pelo arquivo sudoers.
Registrar e monitorar atividades do sudo: você viu como as atividades do sudo são registradas e por que é importante monitorar esses logs por motivos de segurança.
Gerenciar o acesso ao sudo: você aprendeu a conceder e remover privilégios de sudo de usuários conforme necessário.
Essas habilidades são fundamentais para a administração e a segurança de sistemas Linux. Ao gerenciar corretamente os privilégios dos usuários, você pode manter um sistema seguro, no qual cada pessoa tem acesso aos recursos de que precisa sem comprometer a integridade ou a segurança do sistema.



