Su, Sudo e Sudoers no Linux

Su, Sudo e Sudoers no Linux: Neste tutorial você vai entender as permissões de usuários regulares e permissões de superusuário (root) no Linux.

Separação de privilégios é algo fundamental para a segurança de qualquer sistema operacional seja ele um servidor ou um computador pessoal. O Linux faz este papel muito bem não permitindo que nenhum usuário padrão execute tarefas que podem afetar a segurança do sistema como um todo (com exceção do superusuário – root).

Nós já detalhamos como gerenciar usuários no Linux aqui no TEO, mas hoje você vai entender melhor como funciona o sistema de usuários com maior foco no superusuário root, que pode fazer praticamente tudo dentro do seu Linux. Vamos detalhar como logar com o root utilizando o comando su, como executar tarefas com o root utilizando sudo e como manipular o arquivo sudoers para elevar privilégios de usuários dentro do sistema com segurança.

Não se preocupe se você é novato ou avançado no Linux, este tutorial vai do básico ao avançado, com algumas dicas para que você entenda melhor o que está acontecendo.

Então vamos lá?

Su, Sudo e Sudoers no Linux

Su, Sudo e Sudoers fazem papéis relativamente diferentes no sistema para atingir um mesmo objetivo, obter acesso elevado com o superusuário root do Linux.

Vamos dividi-los em partes e detalhar o que cada um faz.

Su

Uma maneira bem simples para obter acesso ao usuário root utilizando qualquer outro usuário é utilizando o comando “su”, simplesmente abra o terminal e digite o comando e o seguinte irá acontecer:

Utilizando o comando su

Utilizando o comando su

O processo acima segue os seguintes passos:

  • Abra o terminal;
  • Digite “su”;
  • Digite a senha do usuário root;
  • Se a senha estiver correta, um shell do usuário root é aberto dentro do terminal, a partir daí você é o rei do Linux;

O comando su pode ser utilizado por qualquer usuário por um fato bem simples, você precisa saber a senha do root para efetuar o login, caso contrário nada é feito.

Uma dica neste caso é que você evite utilizar o comando “su” e prefira “sudo”, porque o comando “su” faz login com o usuário root, permitindo executar tarefas de superusuário. Caso você faça algo imprudente dentro do sistema ao utilizar o comando “su” efetivamente, pode ser que você danifique o bom funcionamento do seu Linux.

Sudo

O comando “sudo” tem uma função similar à do “su” porém tem alguns detalhes que trazem maior segurança para o sistema. Veja algumas das diferenças:

  • Você não precisa saber a senha do usuário “root” para utilizar “sudo”, apenas do seu usuário;
  • O comando “sudo” não faz login com o usuário “root” apenas executa a tarefa requisitada como “root” e volta para seu shell;
  • Este comando é controlado pelo arquivo “sudoers” que, dentre milhares de outras coisas, indica quais usuários podem executar quais tarefas no sistema;
  • Você pode permitir que determinados usuários utilizem o comando “sudo” sem a necessidade de digitar sua senha (menos seguro);

Para executar tarefas com o superusuário root sem fazer login com o mesmo, simplesmente adicione “sudo” antes do comando que deseja executar, por exemplo, se eu quiser executar o comando “ifconfig”, ficaria assim:

sudo ifconfig

Na primeira vez que você executar o “sudo” dentro de um shell, sua senha será requisitada (dependendo da configuração do sudoers). Ao digitar a senha, ela não será mais requisitada até que o tempo de inatividade (timestamp_timeout) que estiver configurado no sudoers termine. Em outras palavras, ao utilizar “sudo” efetivamente uma vez, você só precisará digitar a senha novamente se ficar um determinado tempo sem utilizar o sudo novamente.

Os usuários que podem utilizar o comando “sudo” são definidos no arquivo “sudoers” (o qual vamos falar a seguir), se um usuário não estiver presente neste arquivo e tentar utilizar o “sudo”, receberá a seguinte mensagem:

usuario não está no arquivo sudoers. Este incidente será relatado.

Conforme imagem abaixo:

usuario não está no arquivo sudoers. Este incidente será relatado.

usuario não está no arquivo sudoers. Este incidente será relatado.

Vamos ver como editar o arquivo sudoers.

Editando o arquivo sudoers (visudo)

O arquivo sudoers pode ser editado com qualquer editor pelo superusuário root, porém, não é recomendado. O ideal é que você utilize o comando visudo. Por exemplo:

sudo visudo

Isso evita que você faça alguma besteira e perca o acesso ao “sudo” no seu Linux. Mas, se quiser correr o risco, basta editar o arquivo /etc/sudoers.

Ao digitar “sudo visudo” você verá um arquivo com várias coisas já configuradas (isso vai variar de distro pra distro – tenho usado o Debian 8 ultimamente).

Sudoers (visudo)

Sudoers (visudo)

Este arquivo pode conter milhares de configurações para controlar os acessos ao “sudo” do seu Linux, das quais você pode encontrar mais informações no manual. Para acessar o manual digite:

man sudoers

Porém vou detalhar algumas coisas importantes para que você possa entender melhor como dar privilégios para usuários no seu Linux.

As seguintes linhas são bastante importante pra gente:

root    ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

Elas indicam que o usuário “root” e membros do grupo “sudo” podem executar tudo dentro do sistema. Vamos detalhar melhor essas linhas começando pela primeira:

  • root – indica o nome do usuário que iremos configurar para obter acesso ao sudo, neste caso o usuário root;
  • ALL= – O primeiro ALL seguido do sinal de igual (=) indica o host, neste caso estamos indicando “todos os hosts”;
  • (ALL:ALL) – Esta combinação de (ALL:ALL) indica que o usuário “root” pode executar comandos como todos os usuários e grupos respectivamente.
  • ALL – O último ALL indica que essa regra aplica-se a qualquer comando que o usuário estiver tentando executar com o “sudo”.

Para a segunda linha temos o seguinte:

  • %sudo – indica o nome do grupo que iremos configurar para obter acesso ao sudo, neste caso o grupo “sudo”;
  • ALL= – O primeiro ALL seguido do sinal de igual (=) indica os hosts, neste caso estamos indicando “todos os hosts”;
  • (ALL:ALL) – Esta combinação de (ALL:ALL) indica que o grupo “sudo” pode executar comandos como todos os usuários e grupos respectivamente.
  • ALL – O último ALL indica que essa regra aplica-se a qualquer comando que um usuário do grupo sudo estiver tentando executar com o comando “sudo”.

Se você quiser adicionar um usuário para ter acesso completo ao sudo, simplesmente adicione uma linha da seguinte maneira:

luizotavio    ALL=(ALL:ALL) ALL

E agora o usuário luizotavio poderá utilizar sua própria senha para obter acesso ao comando “sudo”, ou seja, executar comandos com o superusuário root.

Se você quiser ir um pouco além e especificar quais os comandos você deseja que o usuário execute, adicione o seguinte:

usuario ALL=(ALL:ALL) /usr/bin/apt-get, NOPASSWD:/sbin/ifconfig

No trecho acima, o usuário chamado “usuario” poderá executar o comando “apt-get” utilizando sua própria senha e o comando “ifconfig” (sem digitar nenhuma senha). Perceba que “NOPASSWD:” antes do comando, indica que o usuário pode executar aquele comando sem digitar senha nenhuma.

Vídeo tutorial

O vídeo tutorial abaixo detalha o que foi descrito acima.

Link do vídeo: https://www.youtube.com/watch?v=aTbEhjvlmxg

Concluindo

A parte de segurança do Linux é fascinante, tome algum temo para ler o manual do sudoers e entender melhor o que você pode fazer ali, essa é uma das partes mais críticas de um sistema que envolve mais de um usuário.

Até o próximo tutorial!