Sudo o Su… ¿Cuál es la diferencia?

Maikel Llamaret Heredia Leído 1433 veces Variado Terminal su sudo

En estos días ando recopilando viejos artículos de anteriores reencarnaciones del Blog SWL-X. Revisando en los archivos acabo de encontrar este que se relaciona con las diferencias entre los comandos su y sudo. Y es que aunque muchos de los usuarios que se resisten al uso de los sistemas libres ven en la terminal un enemigo feroz, resulta que esta ventanuca negra (o del color que la configuremos) suele ser lo más potente de los sistemas UNIX-Like. Hoy estaremos conociendo las principales diferencias entre los comandos sudo y su.

Nunca he sido de usar Debian, pero las pocas veces lo que he instalado (sobre todo para crear metadistribuciones a partir de él), una de las cosas que hago recién instalado es unir mi usuario al grupo sudo, la costumbre de tantos años utilizando Ubuntu me hace sentir más cómodo de esta manera.

¿Será esta una buena o mala práctica? Veamos las principales diferencias entre los comandos su y sudo.

El comando Su

El comando su permite usar el intérprete de comandos de otro usuario sin necesidad de cerrar la sesión actual. Comúnmente se usa para obtener permisos de root para operaciones administrativas sin tener que salir y reentrar al sistema. Algunos entornos de escritorio, entre ellos GNOME y KDE, tienen programas que piden gráficamente una contraseña antes de permitir al usuario ejecutar un comando que usualmente requeriría tal acceso.

El nombre su proviene del inglés substitute user (usuario substituto). También hay quien lo hace derivar de superuser (super-usuario, es decir, el usuario root o administrador) ya que habitualmente se utiliza para adoptar el rol de administrador del sistema.

Cuando se ejecuta, su pide la contraseña de la cuenta a la se quiere acceder, y si es aceptada, da acceso a dicha cuenta.

[maikel@localhost]$ su
Contraseña:
[root@localhost]# exit
logout
[maikel@localhost]$

Al no poner un usuario, se accede como administrador. Sin embargo, también es posible pasar como parámetro otro nombre de usuario.

[maikel@localhost]$ su swlx
Contraseña:
[swlx@localhost]# exit
logout
[maikel@localhost]$

Una vez introducida la contraseña, podemos ejecutar los comandos como si fuésemos el otro usuario. Al escribir exit, volvemos a nuestro usuario.

Una variante muy utilizada es usar su seguido de un guión. Así, para loguearte como root, tenés que ingresar su - y para loguearte como otro usuario su – otrousuario. ¿La diferencia entre usar o no el guión? Se recomienda usar el guión porque simula que te logueas con ese usuario; por consiguiente, ejecuta todos los archivos de inicio de ese usuario, cambia el directorio actual al HOME de ese usuario, cambia el valor de algunas variables del sistema adaptándolas al nuevo usuario (HOME, SHELL, TERM, USER, LOGNAME, entre otros), entre otros detalles.

Un administrador de sistemas debe tener mucho cuidado al elegir una contraseña para la cuenta de root/administrador, para evitar un ataque por parte de un usuario no privilegiado que ejecute su. Algunos sistemas de tipo Unix tienen un grupo de usuarios llamado wheel, que comprende a los únicos que pueden ejecutar su. Esto podría o no reducir los problemas de seguridad, ya que un intruso podría simplemente apoderarse de una de esas cuentas. El su de GNU, sin embargo, no admite el uso de ese grupo; esto se hizo por razones filosóficas.

El comando sudo

Un comando relacionado, llamado sudo, ejecuta un comando como otro usuario, pero respetando una serie de restricciones sobre qué usuarios pueden ejecutar qué comandos en nombre de qué otros usuarios (usualmente especificadas en el archivo /etc/sudoers).

Por otro lado, a diferencia de su, sudo pide a los usuarios su propia contraseña en lugar de la del usuario requerido; esto permite la delegación de comandos a usuarios en otras máquinas sin tener que compartir contraseñas, reduciendo el riesgo de dejar terminales desatendidas.

Si ejecutamos lo siguiente:

sudo -s

Entonces nuestro usuario se estará convirtiendo en root.

Problemas con sudo: el período de gracia

La ventaja de sudo respecto de su es que sólo ejecuta el comando solicitado simulando ser el otro usuario, sin cambiar verdaderamente el usuario actual. Ello implica que uno puede ejecutar un comando como administrador y, al segundo siguiente, volverá a tener los privilegios del usuario que estaba usando antes… o casi.

Algunos ven como una brecha de seguridad el hecho de que sudo otorgue un “período de gracia” que permita al usuario ejecutar comandos como otro usuario sin la necesidad de tener que ingresar una y otra vez sudo delante del comando y la contraseña luego de ejecutarlo. Pasado ese “período de gracia”, sudo volverá a preguntarnos la clave.

Esto es “malo”, esencialmente porque alguien podría apoderarse de nuestra PC luego de haber ingresado la contraseña de sudo y mientras el “período de gracia” está activo hacer un DESASTRE.

Afortunadamente, es posible deshabilitar el “período de gracia”, lo que va a mejorar la seguridad de tu sistema. Sólo hay que agregar una línea en el archivo /etc/sudoers:

sudo nano /etc/sudoers

Y agrega la siguiente línea al final del archivo:

Defaults:ALL timestamp_timeout=0

El cambio tiene efecto en forma inmediata, sin necesidad de reiniciar el sistema.





Acerca del Autor
Maikel Llamaret HerediaMaikel Llamaret Heredia: Creador y actual Mantenedor del Proyecto SWL-X. Desarrollador y diseñador Web. Cofundador de Web & Media Integrated Solutions. Con más de 10 años de experiencia en la administración de sistemas GNU/Linux. Actualmente uno de los administradores de la Web del Grupo de Usuarios de Tecnologías Libres en Cuba.

Blog Comments powered by Disqus.

Entrada Anterior Siguiente Entrada