Sudo
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Sudo_on_Ubuntu.png/220px-Sudo_on_Ubuntu.png)
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
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
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
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
- su
- setuid
Enlaces externos
- Página de sudo (en inglés)
- sudo(8): Ejecutar un comando como otro usuario – Administración del sistema en el manual de OpenBSD (en inglés)
- sudo(8) página de man bajo Linux (en inglés)
- Sudosh
Referencias
Datos: Q300883
Multimedia: Sudo (Unix) / Q300883