Administração de Sistemas Unix
sudo

Para administradores de sistemas que compartilham a rsponsabilidade de administrar sistemas com outros administradores, ou pessoas que ocasionalmentenecessitam de acesso de superusuário, o sudo é bem útil. O sudo permite que se dê poderes limitados de superusuário para outras pessoas ao mesmo tempo em que o controle é mantido sobre os comadnos que aqueles grupos ou usuários podem usar.

De fato, eu até "sudo"ei a mim mesma. Trabalhando como webmaster para vários sites hospedados nos sistemas de outra empresa, o sudo me restringe aos comandos que alteram configurações para o meu site (ainda que eu possa atualizar os sites usando a ferramenta Perl mirror a qualquer momento que uma atualização é necessária).

O comando sudo, como muitos outros comandos Unix que conhecemos e amamos, emprega um arquivo de configuração detalhando os comandos que podem ser usados por usuários particulares de um host. Um grupo selecto de usuários, por exemplo, pode ter permissão de reiniciar o servidor. Usando o sudo, estes usuários escreveriam:

% sudo shutdown -y -g 5 -i 6

Se a configuração do sudo especifica que os usuários devem receber um sermão ("lecture"), então eles deverão ver algo como isto:

We trust you have received the usual lecture from the local Systems 
Administrator. It usually boils to these two things:

#1) Respect the privacy of others.
#2) Think before you type.

Password:

Os usuários então informam sua senha de login. A senha garante que ninguém que encontre uma tela desprotegida pode usar comandos para os quais não tem permissão.

O sudo usa um sistema de temporização e autoriza os usuários por um período de tempo antes de pedir que eles se autenticam novamente. Por exemplo, será pedida a senha a um usuário a primeira vez que eles usam o sudo, mas não será pedida a senha para os próximos comandos. Após haver passado 5 minutos, entretanto, o usuário terá que informar novamente sua senha. Esta exigência ocasional de autenticação é conhecida como "ticketing".

Os usuários podem pedir por uma lista de comandos permitidos dentro da estrutura do sudo executando o comando sudo com o argumento -l conforme o exemplo:

$ /usr/local/bin/sudo -l
allowed: /usr/bin/reboot 
allowed: /usr/bin/shutdown 
allowed: /usr/sbin/mount

Um usuário somente precisa invocar os comandos para os quais ele normalmente não tem permissão (como usuário normal) via sudo.

Os comandos sudo executados pelos usuários podem também ser registrados em um arquivo de log, que pode ser armazenado em um host central. Dependendo do seu site, isto pode tornar fácil para você revisar os dados do log quando tem que investigar um problema.

O arquivo de configuração do sudo, /etc/sudoers, pode ser simples ou complexo, dependendo do número de gurpos de usuários e os comandos que você quer configurar. O arquivo abaixo é um exemplo simples que configura um grupo de usuários, um grupo de comandos privilegiados, e um grupo de hosts. Ele então associa os grupos de usuários com comandos que eles podem executar (usando o sudo) e sistemas nos quais eles podem executá-los.

#/etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification
Host_Alias BIGGIES = big1, big2, big3, big4, big5, big6

# User alias specification
User_Alias OPS = john, jane, jim, joan, jeff, jan

# Cmnd alias specification
Cmnd_Alias RESTART = /usr/sbin/reboot, /usr/sbin/shutdown, /usr/sbin/init

# User privilege specification
OPS BIGGIES = RESTART

Este arquivo de ser copiado para todos os sistemas listados na linha Host_Alias e o comando sudo deve ser instalado para que o sudo fique operacional.

Este arquivo /etc/sudoers exemplo somente toca na sintaxe que deve estar contida no arquivo de configuração. Você deve obter alguns exemplos adicionais e ler a página man do sudoers para entender completamente as opções.

Eu gosto especialmente do comando sudo por ser um sinônimo de "pseudo". O comando sudo permite um número ilimitado de usuários exercer um papel limitado na administração do sistema, ao mesmo tempo que garante que o administrador "real" limite seu impacto e mantenha um controle de suas atividades. Também gosto do fato que um log é mantido com os comandos utilizados. Eu nunca tive interesse em embaraçar alguém (e fiz mais que a minha cota de erros descuidados), mas manter um registro é crucial para um sistema bem administrado e o sudo torna o registro praticamente indolor.


Sandra Henry-Stocker (a.k.a. S. Lee Henry) tem administrado sistemas Unix por mais de 17 anos. De fato, ela se descreve como uma "USL" (Unix as a second language) e mal lembra o inglês o suficiente para escrever livros e comprar doces. Ela trabalha atualmente para TeleCommunications Systems, uma companhia de tecnologia wireless de Annapolis, MD.

1