Como Usar Sudo e Arquivo Sudoers
O comando sudo permite que usuários sem acesso root executem comandos que normalmente precisariam de privilégios de super usuário, enquanto o arquivo sudoers dá instruções para o sistema sobre como lidar com o comando sudo. Neste tutorial, nós vamos mostrar para você todos os comandos sudo básicos e como editar o arquivo sudoers.
Para Entender o Sudo
Para mostrar como o sudo funciona, precisamos que você primeiro acesse sua VPS através do protocolo SSH. Se você estiver tendo problemas com esse passo, confira nosso tutorial sobre PuTTy.
Por padrão, o usuário root não precisa usar o prefixo sudo. Eles já têm todos os privilégios possíveis. Enquanto isso, se um usuário que não tem acesso root quiser adicionar outro usuário, ele precisa adicionar o prefixo sudo para o comando useradd, como no exemplo abaixo:
sudo useradd edward
Se não for utilizado o prefixo sudo nesse caso, a pessoa sem root receberia como resposta Permission denied (Permissão negada).
O Arquivo Sudoers
O comando sudo é configurado através de um arquivo chamado sudoers, que fica localizado em /etc/.
Através do comando sudo, você proporciona privilégios de nível administrativo para usuários comuns. Normalmente, o primeiro usuário que você cria ao instalar o Ubuntu tem privilégios sudo. Num ambiente de VPS, esse costuma ser o usuário root padrão. Você pode dar a outros usuários a capacidade de rodar o comando sudo. Isso pode ser feito através do comando sudoers.
Importante: Tome cuidado! Editar o arquivo sudoers com erros ou sintaxe ruim pode resultar na exclusão de todos os usuários de sua distribuição.
Arquivo de Sintaxe Sudoers
Você pode abrir o arquivo com o seu editor de texto preferido. Neste caso, nós usaremos o vi:
vi /etc/sudoers
Nosso arquivo de VPS ficará assim:
Vamos dar uma olhada em alguns dos formatos e regras a seguir na hora de editar o sudoers:
- Todas as linhas iniciadas em # são comentários
- root ALL=(ALL:ALL) ALL – esta linha significa que o usuário root tem privilégios ilimitados e pode rodar qualquer comando no sistema
- %admin ALL=(ALL) ALL – o símbolo % especifica um grupo. Qualquer um no grupo de administradores tem os mesmos privilégios que o usuário root
- %sudo ALL=(ALL:ALL) ALL – todos os usuários no grupo sudo têm os privilégios para executar qualquer comando
Outra linha de interesse é #includedir /etc/sudoers;d, que significa que nós podemos adicionar configurações para o arquivos sudoers.d e vinculá-las aqui.
Como Editar o Arquivo Sudoers
Para editar o arquivo /etc/sudoers, use o seguinte comando:
sudo visudo -f /etc/sudoers
É recomendado usar o visudo para editar o arquivo sudoers. O Visudo garante que o sudoers é editado por um usuário de cada vez e proporciona as checagens de sintaxe necessárias.
Para ver quais usuários estão no grupo sudo, nós podemos usar um comando grep:
grep ‘sudo’ /etc/group
Isso irá retornar uma lista de nomes de usuários.
Para adicionar um usuário chamado bill para o grupo sudo, nós podemos usar o comando adduser na linha de comando, como no exemplo abaixo:
adduser bill sudo
Se nós usamos o comando grep para checar quem está no grupo, nós veremos o nome de usuário bill.
Se você quiser dar para alguém privilégios root, apenas adicione-os para o sudo.
Para remover um usuário do sudo, a linha usada é (não se esqueça de trocar bill pelo usuário):
deluser bill sudo
O comando deluser irá remover bill do grupo sudo.
Agora o usuário bill não pode mais executar ações que exigem privilégios sudo.
Como Usar o Arquivo Sudoers para Conceder Privilégios Específicos
Mas e se nós quisermos que o bill possa rodar apenas alguns tipos específicos de comandos com privilégios sudo, como aqueles de rede?
Para fazer isso, basta a gente criar um arquivo de configuração com um nome tipo “networking” em /etc/sudoers.d/.
sudo visudo -f /etc/sudoers.d/networking
Adicione o seguinte texto no arquivo:
Cmnd_Alias CAPTURE = /usr/sbin/tcdump
Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd
Cmnd_Alias NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL
O que nós fizemos no arquivo acima é criar um grupo “netadmin”, Usuários no grupo “netadmin” podem rodar comandos especificados no NETALL. Por sua vez, o NETALL inclui todos os comandos sob as alcunhas CAPTURE e SERVERS. O comando tcpdump está sob a alcunha CAPTURE, neste caso /usr/sbin/tcpdump.
Em seguida, nós iremos adicionar o usuário bill para o grupo netadmin:
sudo adduser bill netadmin
Agora, o usuário bill poderá rodar o comando tcpdump junto de outros comandos relacionados a redes.
Resumo
Se você está trabalhando com múltiplos usuários, entender o comando sudo e o arquivo sudoers é algo fundamental. Neste tutorial, você aprendeu todos os básicos para tomar controle dos privilégios de seu sistema. Deixe um comentário abaixo e conte pra gente como você usou o arquivo sudoers em seu projeto!
Comentários
janeiro 18 2020
É normal o SO não possuir este arquivo e diretório criados por padrão?
janeiro 28 2020
Oi André! Não é comum, não! Você vai precisar recuperar o arquivo para, então, mexer no diretório dele. Existem alguns fóruns na web que podem ajudar você nessa jornada! :)