sexta-feira, julho 28, 2006

Comando sudo

Um dos comandos mais úteis do Linux é o comando sudo.

Com ele é possível rodar programas como root sem comprometer a segurança do sistema. Assim, é possível, por exemplo, que um administrador do sistema não precisar ficar logando como root toda hora para alterar coisas importantes do sistemas. Outra aplicação é permitir que usuários sem privilégios rodem scripts, sem precisar ficar alterando estes scripts para permissão a todos os usuários.

Um exemplo de aplicação, no meu caso é rodar um script php que cadastra, remove e consulta meus usuários de email. Assim, o script php fica associado ao apache, que roda o web server, mas o comando roda um shell script que está associado ao vpopmail. Assim a segurança do servidor permanece, pois o apache só pode roda o script do vpopmail, via localhost, e somente este comando como root, mais nenhum.

Para o sudo funcionar se faz necessário editar o arquivo sudoers. Isto pode ser feito com o comando visudo. Este comando deve ser rodado como root. Após isto, abre um arquivo conf como este:



# 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
# User alias specification
# Cmnd alias specification
# Defaults specification
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL # Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL # Samples
# johndoe ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
# %users localhost = NOPASSWD: /sbin/shutdown -h now


Como podemos ver, você pode definir o usuário (johndoe), ou um grupo (adicionando %, como em %users), o IP acompanhado pelo sinal de = e podendo ser com senha (do usuário) ou não, para a excecução do comando. Em outro momento vou passar uma explicação mais profunda do comando e os operados envolvidos no arquivo.

Alguns bons textos sobre o comando sudo:

LinuxSecurity

Courtesan example

sudo manual

Nenhum comentário: