Como Usar Sudo e Arquivo Sudoers

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!

Author
O autor

Carlos E.

Carlos Estrella é formado em jornalismo pela UFSC e tem as funções de redator, tradutor e SEO na Hostinger Brasil. Já trabalhou com jornalismo de games e tecnologia e hoje aplica essa experiência escrevendo posts e tutoriais no blog da Hostinger. Suas paixões incluem games, dar rolês com a namorada e amigos e ler artigos aleatórios da Wikipédia de madrugada.