Introdução ao SUDO

O comando sudo do sistema operacional Unix, e compatíveis,  permite a usuários comuns obter privilégios de outro usuário, em geral o super usuário, para executar tarefas específicas dentro do sistema de maneira segura e controlável pelo administrador. O nome é uma forma abreviada de se referir a substitute user do (fazer substituindo usuário) ou super user do (fazer como super usuário).

História

sudo foi desenvolvido por Bob Coggeshall e Cliff Spencer nos anos 80. A versão atual é mantida por Todd C. Miller e distribuída sob um tipo de licença BSD.

Uso e funcionamento

Um super usuário precisa definir no arquivo /etc/sudoers quais usuários podem executar sudo, em quais computadores podem fazê-lo e quais comandos podem executar através dele. Por ser uma tarefa delicada em termos de segurança a edição direta deste arquivo não é recomendada. Para isso foi criada a ferramenta denominada visudo que invoca um editor para uma cópia do arquivo /etc/sudoers e em seguida verifica o conteúdo do arquivo antes de substituir a configuração atual.

Um usuário que esteja inscrito no /etc/sudoers pode invocar o comando da seguinte forma:

sudo [-u usuário] comando

Onde comando é o comando que deseja executar. A opção -u usuário serve para especificar qual usuário deve ser utilizado para executar o comando, se omitida sudo considera o usuário root.

Antes do comando ser executado, sudo confirma a identidade do usuário pedindo sua própria senha. Se o usuário tem permissão garantida na configuração, o comando é executado como super usuário e retorna. A linha de comando continua sendo a do usuário que executou sudo e não a do super usuário.

Caso sudo seja executado de forma não permitida pela configuração, um registro da ocorrência é feito no arquivo /var/log/auth.log.

Distribuições

Algumas distribuições Linux desabilitam o super usuário e exigem que todas as tarefas administrativas sejam realizadas através do sudo. Ubuntu é um exemplo destas distribuições.

Apesar do super usuário ser desativado na distribuição Ubuntu, o mesmo pode ser ativado executando passwd através do sudo, atribuindo uma senha para root.

Fonte: http://pt.wikipedia.org/wiki/Sudo

Principais opções do arquivo /etc/sudoers

Host Aliases:

Pode definir alias para grupos de máquinas ou para host específico.

Exemplos:

Host_Alias MAIL = 192.168.0.1, 10.1.1.1, 10.2.1.1
Host_Alias SAMBA = 10.1.1.4

User Aliases:

Pode definir alias para grupos de usuários ou para um usuário específico. Inclusive com informações de LDAP, NIS, AD e arquivos de configuração do Linux.

Exemplos:

User_Alias BACKUP = %suporte %admins
User_Alias ADMINS = ricardo.pinheiro, vagner.fonseca

Command Aliases:

Pode definir alias para grupos de comandos ou para um comando específico.

Exemplos:

Cmnd_Alias KILL = /bin/kill
Cmnd_Alias DESLIGAR = /sbin/shutdown, /sbin/halt
Cmnd_Alias SU = /bin/su
Cmnd_Alias REDE = /sbin/route, /sbin/ifconfig, /sbin/ip, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias PACOTE = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude
Cmnd_Alias SERVICOS = /usr/sbin/invoke-rc.d, /usr/sbin/service, /usr/sbin/update-rc.d

Seção de Comandos:

Sintaxe:

user    MACHINE=COMMANDS

Permite ao usuário root executar qualquer comando de qualquer lugar;

root    ALL=(ALL) ALL

Permite ao usuário root executar de qualquer como qualquer usuário qualquer comando

%admin    ALL=(ALL) ALL

Permite aos membros do grupo ‘admin’ executarem de qualquer lugar como qualquer usuário qualquer comando.

%sys ALL=(ALL) REDE, PACOTE, SERVICOS,DESLIGAR

Permite ao grupo ‘sys’ vindo de qualquer máquina, como qualquer usuário rode os comandos definidos pelos apelidos: REDE, PACOTE, SERVICOS, DESLIGAR

%wheel    ALL=(ALL)    NOPASSWD: ALL

Permite ao grupo ‘wheel’ vindo de qualquer máquina como qualquer usuário, sem pedir senha (NOPASSWD:) qualquer comando.

ADMINS    SAMBA=(root) NOPASSWD: REDE, SERVICOS, DESLIGAR, KILL

Usuários cadastrados no Alias ADMINS vindos do grupo de máquinas registradas no Alias SAMBA, como usuário root sem solicitar a senha, rode os comandos cadastrados no Alias REDE, SERVICOS, DESLIGAR, KILL

carlos    MAIL = /usr/sbin/, !DESLIGAR, !KILL

Usuário ‘carlos’ nas máquinas cadastradas no Alias ‘MAIL’ pode executar qualquer comando do diretório /usr/sbin/, exceto os comandos cadastrados no Alias ‘DESLIGAR’ e ‘KILL’.

Estes são alguns exemplos de configurações que podem ser feitas com o arquivo sudoers.

Obs.: Quando o Debian é instalado em sua versão básica o mesmo não vem o com o sudo instalado, mas nada que um ‘apt-get install sudo’ não resolva o problema.

Espero que tenham gostado do post e continuem comentando, assinem na lista de nosso portal para se manterem atualizados das novidades.

  • Ótimo artigo sobre o mundo Unix/Linux.

  • Bom post, não sabia destas possibililades de atribuir os programas que o usuário pode ou não pode executar. Gostei da tirinha também.

    • Bruno,

      Fico feliz que tenha gostado do post, quanto a tirinha ela é bem antiga e coube muito bem no post.

      Abraços

  • Rodrigo Ramos

    Otima aula ~Ricardo…

    Cada dia que passa eu tenho curtido mais Win.. e Bernardes me desculpe.. mas realmente o Janela ta ficando para tras no meu gosto…

    • Rodrigo,

      Rsrrs gostei do ~ricardo, e vai piorar, pois temos muito que ver ainda 🙂

      Abraços