No Linux e em outros sistemas operacionais semelhantes, apenas usuários privilegiados como o “root” podem executar todos os comandos e realizar operações críticas no sistema, como por exemplo instalar e atualizar, remover pacotes, criar usuários, grupos, modificar determinados arquivos de configuração do sistema e algumas coisas mais.
Ao tentar realizar qualquer um desses processos sem ser um usuário privilegiado, você deveria receber uma mensagem de alerta, como permissão negada (Permission denied) por exemplo:
Um administrador de sistemas com a função de usuário root pode permitir que outros usuários “normais” do sistema, executem alguns comandos, ou realizem operações críticas do sistema apenas utilizando os poderes do comando SUDO.
SUDO = Super User DO
Em uma tradução simples: Super Usuário faça!
Então ao invocar o comando “sudo”, você está dizendo ao sistema: super usuário faça o comando xxx.
No exemplo abaixo estou dizendo para executar o comando “apt update”:
Mas como sei se meu usuário “normal” (metalhead) tem certos poderes? Ou como sei se ao digitar o sudo antes do comando vou ter determinados privilégios?
Para isto existe o arquivo de configurações “sudoers” que fica armazenado em /etc/sudoers. No entanto não recomenda-se editar o arquivo normalmente e sim utilizar o comando “visudo”.
Experimente o comando:
$ sudo visudo
Geralmente, o usuário padrão que criamos na instalação já está no grupo sudo e por isto você tem acesso digitando o comando acima.
Observe nas ultimas linhas que temos a especificação do usuario “root” e logo abaixo temos a permissão de usuários do grupo “%sudo” poder executar qualquer comando:
Então agora ficou claro que, em tese, quem pertencer ao grupo %sudo poderá executar processos privilegiados utilizando o comando sudo antes do comando.
Para ver os usuários que pertencem ao grupo “sudo”, utilizamos o comando “getent [database] [nome da database]”. No exemplo temos a database de grupos (group) e o nome da base que é o grupo em si (sudo):
$ getent group sudo
Na saida é exibido então que apenas o usuario “metalhead” é quem está associado ao grupo “sudo”.
Uma vez que este usuário pode rodar comandos de super usuário, vamos criar um novo usuário chamado “logan” e verificar suas propriedades em seguida.
Para isto vamos digitar:
$ sudo adduser logan
Preencha todas as informações do novo usuario, senha, nome completo e se desejar mais alguns detalhes da conta e confirme:
Em seguida vamos utilizar novamente o comando “getent” para verificar as informações de nome de usuário, UserID e diretório home padrão e o shell padrão:
Vamos testar na pratica se nosso usuário tem algum direito. Para isto temos que trocar o usuário que estamos em sessão, para fazer isto diretamente do terminal, existe o comando “su” (diferente do sudo):
$ su logan
Pronto, já estamos logado com o usuario “logan”:
Agora podemos tentar executar um comando privilegiado a partir deste novo usuario:
Veja que a mensagem diz claramente que o usuario “logan” não está dentro do arquivo sudoers, ou seja, ele não pertence a nenhum grupo que tenha tais poderes.
Vamos adicionar o usuario logan ao grupo “sudo”. Para isto basta voltar ao usuario “metalhead” (digite “exit”) e em seguida digite:
$ sudo usermod -a -G sudo logan
Verificamos então novamente o grupo sudo:
Agora nosso usuario “logan” já pertence ao grupo sudo, e pode executar os comandos:
Teste aí!!