viernes, 20 de mayo de 2011

Diferencia entre Su y Sudo

Hace unos días recibí una consulta por parte de Miguel, un asiduo lector del blog y comentador compulsivo, respecto de cuál es exactamente la diferencia entre sudo y su. En particular, Miguel estaba preocupado por saber si un método era más seguro que el otro. Sucede que había leído por ahí que sudo no era lo suficientemente seguro y quería saber más.

Este es otro post dedicado a aquellos que pedían más artículos sobre los misterios del terminal

Su

El programa 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.

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

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

[fulano@localhost]$ su mongo
Contraseña:
[mongo@localhost]# exit
logout
[fulano@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 logueás 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), y otras cositas más.

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.

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.

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 compu luego de haber ingresado la contraseña de sudo y mientras el "período de gracia" está activo y 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 agregá 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.

Fuente:http://usemoslinux.blogspot.com/2011/05/cual-es-la-diferencia-entre-sudo-y-su.html#more

No hay comentarios:

Publicar un comentario