Sudo

El comando ejecutándose dentro de una terminal.

El programa sudo (del inglés super user do[1],[2]​) es una utilidad de los sistemas operativos tipo Unix, como GNU/Linux, BSD, Mac OS X en adelante, que permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (normalmente el usuario root) de manera segura, convirtiéndose así temporalmente en el otro usuario durante la ejecución del programa. Se instala por defecto en /usr/bin.

Historia

[editar]

sudo fue escrito originalmente por Bob Coggeshall y Cliff Spencer en 1980, en el departamento de ciencias de la computación de la Universidad estatal de Nueva York en Búffalo. La versión actual la mantiene el desarrollador de OpenBSD Todd C. Miller y se distribuye bajo una licencia BSD.

En 1985 se publicó en el grupo de noticias net.sources una versión mejorada acreditada a Phil Betchel, Cliff Spencer, Gretchen Phillips, John LoVerso y Don Gworek. Garth Snyder publicó otra versión mejorada en el verano de 1986 y durante los siguientes cinco años fue mantenido con la colaboración de muchas personas, incluyendo Bob Coggeshall, Bob Manchek, y Trent Hein.

En 1991 Dave Hieb y Jeff Nieusma escribieron una nueva versión con un formato mejorado para el fichero /etc/sudoers bajo contrato con la firma consultora The Root Group, versión que posteriormente fue publicada bajo los términos de la Licencia Pública General de GNU (GNU/GPL).

Desde 1996 el proyecto es mantenido por Todd Miller con la colaboración de Chris Jepeway y Aaron Spangler.

Uso

[editar]

Por defecto, el usuario debe autenticarse con su contraseña al ejecutar sudo. Una vez se ha autenticado el usuario, y si el archivo de configuración /etc/sudoers permite dar al usuario acceso al comando requerido, el sistema lo ejecuta.

Existe la opción de habilitar el parámetro NOPASSWD con el fin de evitar introducir la contraseña de usuario a la hora de ejecutar el comando.

El archivo de configuración /etc/sudoers especifica qué usuarios pueden ejecutar qué comandos en nombre de qué otros usuarios. Como sudo es muy estricto con el formato de este archivo, y cualquier error podría causar problemas serios, existe la utilidad visudo; ésta opción sirve para comprobar que el fichero /etc/sudoers no está siendo utilizado desde otra sesión del usuario root, evitando de esta forma la multiedición con posibles corrupciones del fichero.

Un ejemplo de consola, donde el usuario no tiene acceso:

[user@hostname ~]$ sudo emacs /etc/sudoers
    
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.
    
Password:
user is not in the sudoers file. This incident will be reported.


Se muestra a continuación el registro de este intento fallido, y de uno exitoso posterior, después de haber añadido a user a /etc/sudoers:

[user@hostname~]$ sudo tail /var/log/auth.log
Aug  5 06:00:28 localhost sudo:    user: user NOT in sudoers ; TTY=pts/1 ; PWD=/home/user ; USER=root ;  COMMAND=/usr/bin/emacs /etc/fstab
Aug  5 06:01:15 localhost su[15573]: (pam_unix) session opened for user root by user(uid=1000)
Aug  5 06:02:09 localhost sudo:    fulano : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/emacs /etc/fstab
Aug  5 06:02:49 localhost sudo:    fulano : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log

Los sistemas operativos Ubuntu y Mac OS X fuerzan a hacer todo acceso administrativo por medio de sudo, pues la contraseña de root está desactivada por defecto; aunque se puede activar con ayuda del programa passwd en Ubuntu, y Utilidad de Directorios en OS X.

Intérprete de comandos

[editar]

sudo no registra los programas que se escriban en un intérprete de comandos. Por ejemplo, si un usuario puede acceder a un intérprete por medio de sudo y ejecuta sudo -s, ninguno de los comandos en él escritos será registrado. Para poder registrar comandos dentro de un intérprete de comandos, sudo debe ser usado junto con otra herramienta de seguridad, tal como sudosh (sudo shell), que le dará al usuario un intérprete con registro.

Véase también

[editar]

Enlaces externos

[editar]

Referencias

[editar]
  1. Simson Garfinkel, Gene Spafford. Practical Unix & Internet Security. 2nd Ed. 1996. O'Reilly & Associates, Inc., p. 84. (ISBN 1-56592-148-8).
  2. su: Cambiando quien dices ser (Practical Unix & Internet Security. 2nd Ed, Capítulo 4.3). (en inglés)