Root > sudo
Sudo es un programa diseñado para facilitar a los administradores del sistema permitir a algunos usuarios ejecutar comandos como root (u otro usuario). La filosofía básica es dar los menos posibles privilegios pero permitiendo a las personas que su trabajo pueda ser realizado. Sudo también es una vía efectiva para registrar quien corrió tal comando y cuando.
Desde Debian Squeeze, si instala la tarea Desktop durante la instalación, esta pondrá sudo con la configuración predeterminada dando derechos de sudo a cualquier miembro del grupo sudo Dependiendo de las cuentas de usuario que configuró durante la instalación, es posible que no se hayan agregado a ese grupo, puede verificarlo corriendo groups.
¿Porque sudo?
El uso de sudo es mas seguro que abrir una sesión de root por ciertas razones, algunas son:
Nadie necesita conocer la contraseña de root, sudo solicita el password de usuario actual. Privilegios extra pueden ser cedidos a usuarios individuales temporalmente, y todo esto sin necesidad de cambiar la contraseña actual
Es fácil correr únicamente comandos que quieren privilegios especiales vía sudo, el resto del tiempo se trabajará como un usuario sin privilegios, esto reduce los daños que un error puede causar
Para efectos de auditoría y registro, cuando sudo se ejecuta, el nombre original del usuario y el comando son registrados. Por esta razón, cambiarse a root usando sudo -i o sudo su debería caer en desuso porque cancela lo anteriormente indicado.
Resumen de configuración
Si desea permitir a ciertos usuarios ejecutar ciertos programas, este es un ejemplo rápido (para mas información lea bien el manual).
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
User_Alias MYADMINS = jdoe
# User alias specification
# Cmnd alias specification
Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff
Cmnd_Alias PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude
# User privilege specification
# Los usuarios listados arriba (MYADMINS) pueden correr el administrador de paquetes y reiniciar el sistema.
MYADMINS ALL = PKGMGMT, SHUTDOWN
# Users in the group wheel can execute any command impersonating any user.
#%wheel ALL= ALL
#Default rule for root.
root ALL=(ALL) ALL
Problemas y consejos
Disculpe, el usuario jdoe no tiene permitido ejecutar...
Una sesión tipica es similar a esta:
$sudo test We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for jdoe: Sorry, user jdoe is not allowed to execute '/usr/bin/test' as root on localhost.
El mensaje significa lo que dice: el usuario que está intentando ejecutar el comando no tiene permitido ejecutar el comando dado en esa máquina. Una razón para la confusión sobre esto es que el administrador solo añadió el usuario jdoe a un grupo privilegiado, pero el usuario continúa usando una sesión vieja, que no tiene la nueva información de los grupos, y por supuesto no tiene los derechos de sudo. La gente en este caso recomienda una reinicio de sesión con su - $USER
La directiva include
El archivo estándar /etc/sudoers en Squeeze finaliza con la línea:
#includedir /etc/sudoers.d
Esto hace posible a otros paquetes proveer fragmentos en /etc/sudoers.d/<packagename> que modifican la configuración de sudo. A primera vista parece que se debe eliminar el signo numeral ("almohadilla", "hash" o "pound"), pero ¡no, el '#' es parte de la directiva!