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 seu serviço VPS através do protocolo SSH. Se você estiver tendo problemas com esse passo, confira nosso tutorial sobre PuTTy.
Dica
Comprar servidor VPS é uma das melhores decisões que você pode fazer se que um host robusto e com recursos de sobra pras suas aplicações web. E na Hostinger tem até 67% OFF para você aproveitar!
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
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
January 18 2020
É normal o SO não possuir este arquivo e diretório criados por padrão?
January 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! :)