Sudo é um modo padrão para conceder aos usuários alguns direitos administrativos sem fornecer a senha de root. Sudo é muito util em um ambiente multiusuário com um mescla de servidores e workstations. Simplesmente chame o comando com o sudo:
# sudo /etc/init.d/dhcpd restart # Rode o script rc como root # sudo -u sysadmin whoami # Rode o cmd como um outro usuário
Configuração
Sudo é configurado em /etc/sudoers
e deve ser editado comente com o visudo
. A syntax básica é (as listas são separadas por virgula):
user hosts = (runas) commands # Em /etc/sudoers
users
um ou mais usuários ou %group (como %wheel) para ganhar os direitoshosts
lista de hosts (ou ALL)runas
lista de usuários (ou ALL) que a regra de comando pode ser rodado como. É cercado em ( )!commands
lista de comandos (or ALL) que serão rodados como root ou como (runas)
Adicionalmente aquelas palavras chave pode ser definidas como alias, ela são chamadas User_Alias, Host_Alias, Runas_Alias e Cmnd_Alias. Isso é útil para instalações maiores. Aqui um exemplo sudoers:
# cat /etc/sudoers # Host aliases são subnets ou hostnames. Host_Alias DMZ = 212.118.81.40/28 Host_Alias DESKTOP = work1, work2 # User aliases é uma lista de usuários que podem ter os mesmos direitos User_Alias ADMINS = colin, luca, admin User_Alias DEVEL = joe, jack, julia Runas_Alias DBA = oracle,pgsql # Comando aliases define o caminho completo de uma lista de comandos Cmnd_Alias SYSTEM = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/ Cmnd_Alias PW = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root # Não pwd do root! Cmnd_Alias DEBUG = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap
# As reais regras root,ADMINS ALL = (ALL) NOPASSWD: ALL # ADMINS podem fazer qualquer coisa com/ou um senha. DEVEL DESKTOP = (ALL) NOPASSWD: ALL # Desenvolvedores tem total direito nos desktops DEVEL DMZ = (ALL) NOPASSWD: DEBUG # Desenvolvedores podem debugar os servidores DMZ. # Usuário sysadmin pode mexer por aí nos servidores DMZ com alguns comandos. sysadmin DMZ = (ALL) NOPASSWD: SYSTEM,PW,DEBUG sysadmin ALL,!DMZ = (ALL) NOPASSWD: ALL # Pode fazer qualquer coisa fora do DMZ. %dba ALL = (DBA) ALL # Grupo dba pode rodar como usuário database. # qualquer um pode montar/desmontar um cd-rom nas máquinas desktop ALL DESKTOP = NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom