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:
1 | 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:
1 2 | 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:
1 2 | 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:
1 2 3 4 5 6 | 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:
1 | user MACHINE=COMMANDS |
Permite ao usuário root executar qualquer comando de qualquer lugar;
1 | root ALL=(ALL) ALL |
Permite ao usuário root executar de qualquer como qualquer usuário qualquer comando
1 | %admin ALL=(ALL) ALL |
Permite aos membros do grupo ‘admin’ executarem de qualquer lugar como qualquer usuário qualquer comando.
1 | %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
1 | %wheel ALL=(ALL) NOPASSWD: ALL |
Permite ao grupo ‘wheel’ vindo de qualquer máquina como qualquer usuário, sem pedir senha (NOPASSWD:) qualquer comando.
1 | 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
1 | 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.
Adriano,
Obrigado pelo comentário.
Abraços
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
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