Quantas vezes um administrador se depara com a difícil necessidade de ceder a senha de root a algum administrador de um serviço específico, ou a um grupo de pessoas, e na fatalidade alguém com a senha de root destrói tudo. Pois é, o sudo serve para resolver este dilema.
É aconselhável desabilitar o *"ssh hostname sudo <cmd>"*, porque executando o ssh desta maneira será apresentado a senha em claro. Em vez disto execute *"ssh -t hostname sudo <cmd>"*
Esta é a parte principal, que habilita o que o usuário pode executar e em que máquina. O arquivo /etc/sudoers pode ser compartilhado entre múltiplos sistemas para que se tenha efeito.
Sintaxe:
user MACHINE=COMMANDS
Seção de Comandos:
Permite ao usuário root executar qualquer comando de qualquer lugar;
root ALL=(ALL) ALL
Permite aos membros do grupo 'sys' executarem todos os comandos especificados neste alias:
Permite a todos os membros do grupo 'users' executar o comando 'shutdown':
%users localhost=/sbin/shutdown -h now
Permite a todos os usuários listados no alias 'ADMINS' executem comandos como superusuários sem a necessidade de senhas.
ADMINS ALL=(ALL) NOPASSWD: ALL
Permite as usuários listados no alias 'ADM' executarem os comandos listados em 'STORAGE' nos host de 'FILESERVERS' sem a necessidade de senhas:
ADM FILESERVERS=NOPASSWD: STORAGE
Permite ao usuário 'ricardo.brito' executar os comandos kill e iptables na máquina 10.1.1.1, entretanto o comando iptables ele pode executar sem senha:
Permite ao usuário 'ricardo.brito' executar o comando 'passwd' para modificar a senha dos usuários nos servidores de email 'MAILSERVERS', exceto a senha do root:
Proíbe ao usuário 'john' executar o comando 'su -', 'su - root' ou 'su root' na máquina 'penta':
john penta = /usr/bin/su [!-]*, !/usr/bin/su *root*
Para qualquer máquina no Host_Alias SERVERS o usuário jill pode executar qualquer comando do diretórios /usr/bin/ exceto os comandos descritos nos Cmnd_Aliases 'SU' e 'SHELLS':
jill SERVERS = /usr/bin/, !SU, !SHELLS
No host www, qualquer usuário do User_Alias WEBMASTERS, pode qualquer comando como usuário (www) ou apenas o 'su www'.
WEBMASTERS www = (www) ALL, (root) /usr/bin/su www
Os usuários do grupo de rede secretaries podem gerenciar as impressoras bem como adicionar e remover usuários em todos os hosts.
+secretaries ALL = PRINTING, /usr/bin/adduser, /usr/bin/rmuser
O usuário 'jen' pode executar qualquer comando, exceto nos servidores do Host_Alias SERVERS:
jen ALL, !SERVERS = ALL
# O usuários do grupo 'users' podem executar os comandos 'STORAGE' nos hosts 'FILESERVERS':
[2] Comentário enviado por y2h4ck em 16/04/2007 - 23:37h
Uma providencia de segurança importante é adicionar um grupo especial o qual somente o mesmo tenha acesso a execução do sudo, fazendo com que a administracao de usuarios com privilegios de execucao do mesmo seja facilitada e tambem evita que o acesso seja demasiadamente permissivo.
[3] Comentário enviado por rick001_7 em 17/04/2007 - 00:17h
Sempre usei o Sudo, uma ótima forma de você poder gerenciar servidores, principalmente em grandes empresas, onde várias pessoas têm acesso ao servidor.
Utilizando o Sudo você tem o log de cada usuário e o que cada um fez, podendo verificar e analisar as ações de cada um, no caso de algum desastre causado por algum usuário na manipulação da máquina.
[10] Comentário enviado por ckavila em 16/10/2007 - 15:59h
Oi... Como vai?
Li seu artigo sobre o sudo. Nele você diz que alias podem ser definidos inclusive com informaçoes do Active Directory. Eu estou usando WINBIND para logar em estações Debian utilizando conta e senha do AD. So que não consigo fazer esses usuarios terem acesso ao sudo. Será que você poderia me ajudar?
[15] Comentário enviado por flavioc em 17/07/2009 - 22:22h
Ola, preciso de ajuda. Uso Ubuntu 9.04. O uso do Sudo aqui deu um problema. to tentando configurar um hardware, e ao aplicar as configurações da um erro. Veja abaixo:
flavio@flavio-laptop:~/wis-go7007-linux-0.9.8-3$ wd=`pwd`; sudo patch -d /etc/init.d -p0 -i "$wd"/patches/mountdevsubfs.sh-usbfs.patch
sudo: patch: command not found
[17] Comentário enviado por rbn_jesus em 06/07/2011 - 14:12h
Olá Marcospantazis,
Eu sou o autor do artigo, e sobre a tua pergunta, O que pretende não é delegação de permissão.
O q vc pode fazer é criar um script bash, e coloca-lo como bash do usuário em questão.
ex:
### shellssh ####
ssh ${LOGNAME}@maqRemota
No arquivo /etc/passwd, altere /bin/bash, para o arquivo acima.
[20] Comentário enviado por sr.machado em 15/07/2013 - 07:39h
Eu particularmente nunca usei porque a maioria do que uso é em servidores, claro que no meu pc pessoal uso, mas a frequencia é menor. Excelente artigo. Parabéns!
[23] Comentário enviado por removido em 23/07/2014 - 20:14h
Excelente artigo, me salvou aqui pq havia reinstalado o sistema e o sudo não funciona quando eu tentava usar comandos como o "Installpkg"! Obrigado! :D
[24] Comentário enviado por danistation em 15/06/2015 - 16:36h
Excelente abordagem, explicativa e demonstrativa! Com uma contribuição dessas, fica difícil não se motivar em aprofundar mais no manual do sudo entre outros! Parabéns ao autor!