O incompreendido 'sudo'

O ‘sudo’ é mesmo um incompreendido por muitos usuários. Muita gente o abomina.
O ‘sudo’ foi uma solução adotada por muitas distribuições para prevenir que um usuário não precise usar a conta ‘root’ especialmente para coisas triviais. Se a pessoa tivesse de executar algum programa que requeresse privilégios do ‘root’ bastaria executar o comando ‘sudo [programa]’ , ex:

sudo useradd hamacker

No exemplo acima, estou criando no meu sistema, a conta ‘hamacker’. O comando acima só funcionará se o usuário que o executa estiver autorizado a usar o ‘sudo’. Mas aí você diz : “Pô, mas acontece que o usuário cadastrado durante a instalação do Linux já tem privilégios de sudo”. Pois é, isso é uma faca que corta para os dois lados, se o usuário em questão sabe exatamente o que esta fazendo não há problemas, mas se for alguem que copia/cola coisas que não entende para a tela dum terminal aí podemos ter um sério problema. Mas seria realmente este um problema do ‘sudo’ ?

Não, o problema não é o ‘sudo’. O ‘sudo’ é bastante flexível, como vamos ver a seguir.
Abra dois terminais, num deles você usará a conta ‘root’, execute :

sudo bash
(depois dê a senha do sudo)

Agora, como um superusuário, execute :

sudo useradd -m -s /bin/bash cebolinha
sudo passwd cebolinha

No exemplo acima, estamos criando a conta ‘cebolinha’ e estabelecendo uma senha para a mesma. Substitua o ‘cebolinha’ por qualquer outro nome – afinal é apenas um teste, só não use um login ‘teste’ e senha ‘teste’ porque muitos robots na internet vasculham conta ‘teste’ com senha ‘teste’, assim como ‘admin/admin’, ‘root/root’, isto é, não use combinações manjadas. Também não use logins pré-existentes, porque no final do teste iremos remover essa conta.

Abra um outro terminal (preferencialmente uma aba do gnome-terminal) e execute :

su cebolinha

Isso fará com que você logue-se no outro terminal como usuário ‘cebolinha’.
Como usuário ‘cebolinha’, tente executar :

tail -n1 /var/log/auth.log

Provavelmente você recebeu um erro de “permissão negada”.
Bem, agora tente com ‘sudo’ assim :

sudo tail -n1 /var/log/auth.log

E então…

Foi barrado, né ?
Note que tais execuções ficam registradas no arquivo de log /var/log/auth.log como sendo incidentes :

Inclusive o comando que o ‘cebolinha’ tentou executar vai parar no log.

Percebeu ? A idéia do sudo é restringir usuários de executar programas, mas não pára por aí, você também tem a flexibilidade de dizer ao ‘sudo’ o que o ‘cebolinha’ poderia executar ou o contrário, o que nunca poderá executar, vamos experimentar ?
Vá noutro terminal que tem permissão de root e execute :

export EDITOR=gedit
visudo

Na realidade, bastaria o comando ‘visudo’, mas ele sozinho usa o editor ‘vi’ (não confundir com o ‘vim’) que é incrivelmente complexo, por isso, estou exportando a variável EDITOR para usar o editor de textos ‘gedit’ com o qual todos nós, usuários de gnome, estamos familiarizados.

Acrescente a seguinte linha ao arquivo a ser editado :

cebolinha ALL=NOPASSWD:/usr/bin/tail -n1 /var/log/auth.log

Salve e saia do editor.
Agora, volte ao terminal onde está a conta cebolinha e repita o comando (que você já foi barrado uma vez) :

sudo tail -n1 /var/log/auth.log

Percebeu ?
Agora você pode executar o comando ‘tail’, e mais um detalhe : SEM SENHA. Mas isso ainda não é tudo, você definiu inclusive quais parâmetros serão aceitos, se eu tentar executar o ‘tail’ sobre outro arquivo então veja o que acontece :

Se eu trocar :

cebolinha ALL=NOPASSWD:/usr/bin/tail -n1 /var/log/auth.log

por :

cebolinha ALL=NOPASSWD:/usr/bin/tail

O meu comando ‘tail’ poderá observar qualquer arquivo, mas nesse caso, eu removeria o NOPASSWD porque seria interessante que o operador digitasse a senha para provar que ele é afinal de contas ele mesmo.

Tá entendendo melhor o sudo ?

O sudo pode tanto negar execução de qualquer programa como também o inverso, permitir executar qualquer programa, mas negar algumas exceções. Flexibilidade ao máximo, assim eu poderia muito bem restringir comandos ilógicos executados por pessoas tontas e débeis mentais que poderiam tentar um ‘sudo rm -fR /’.

Eu não estou querendo dar uma aula sobre o ‘sudo’ e ‘sudoers’, não é essa minha intenção. Você poderá ver todos os parâmetros possíveis procurando diretamente google ou via terminal com o comando ‘man’.

Minha intenção é esclarecer a flexibilidade que o comando ‘sudo’ pode acrescentar a administração do sistema e especialmente sobre os servidores para a realização de backups, montagens de dispositivos, etc… sem ter que usar a conta root e sem liberar 100% do sudo.

Para remover a conta ‘cebolinha’ que foi criada para testes, primeiramente feche o terminal onde o cebolinha está logado com o comando ‘exit’ e no terminal com permissões de root, execute :

userdel -fR cebolinha

Pronto ! Cebolinha foi embora para nunca mais voltar.

  1. #1 por Lucas Polo em 27 \27\UTC novembro \27\UTC 2008 - 21:41

    Parece bobo o que vou escrever agora, mas é simples compreender:

    “Super user do”

    ou: “Super usuário faça”

  2. #2 por m0b5t3r em 21 \21\UTC julho \21\UTC 2009 - 4:46

    Prezado hamacker, parebéns por sua iniciativa em compartilhar seus conhecimentos conosco. Sou novo no universo Linux, baixei o seu Ubuntu perfeito 9.04 com o objetivo de usar a Watchtower Library, mas como não tenho gravador de dvd gostaria de saber como faço para gravar a imagen ISO no pendrive e dar boot por ele, desde já agradeço! Seu irmão!

  3. #3 por Aldemir em 21 \21\UTC julho \21\UTC 2009 - 4:57

    Prezado amigo, parabéns por sua iniciativa em compartilhar seus conhecimentos! Sou novo no universo Linux, optei por esse O.S para fugir da pirataria, mas como uso Watchtower Library não podia abrir mão do XP, então um irmão me indicou o seu site e baixei o Ubuntu Perfeito 9.04, que já vem com o emulador do ambiente Windows, a solução para rodar WL2008e continuar meu estudo pessoal agora no ambiente Linux. Mas o problema é que meu gravador de dvd não lê nem grava mais dvd, apenas cd, então preciso muito saber como faço para gravar a ISO no pen drive (tenho um de 2Gb e outro de 4GB) e dar o boot por ele? Desde já agradeço! Abraço
    Seu irmão, Aldemir

  1. MSSUDO ? « Hamacker's Palace
%d blogueiros gostam disto: