Differences between revisions 19 and 20
Revision 19 as of 2012-12-31 23:54:08
Size: 4457
Comment: add link to french translation
Revision 20 as of 2014-04-09 20:12:11
Size: 4445
Comment: may be safer to only allow dedicated commands
Deletions are marked like this. Additions are marked like this.
Line 42: Line 42:
Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt Cmnd_Alias SHUTDOWN = /sbin/reboot, /sbin/poweroff

Translation(s): العربية - English - Español - Français - Italiano - Русский

(!) ?Discussion


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!