El comando su

El comando su (Set User) está relacionado con el login en el sistema y con los permisos. El uso principal de este comando es que un usuario normal adquiera los permisos de otro usuario del sistema (incluido root) siempre y cuando sepa su password.

Es muy común que, si somos nosotros el "dueño" de la contraseña de root, y por tanto la persona encargada de la administración del sistema, trabajemos normalmente como usuario normal por motivos de seguridad. Pero podemos necesitar convertirnos en root para alguna tarea específica: reiniciar el servidor web, modificar la configuración del sistema... para después volver a "ser" nuestro usuario normal.

$ su
Password: [ Escribimos el password de root ]
#
		

su llamado "a secas" como en el ejemplo anterior asume que el usuario actual quiere adquirir los permisos de root. Si proporcionamos el password adecuado ya los tendremos. Podemos ahora hacer las tareas de administración que necesitemos. Escribiendo exit volveremos a "ser" nuestro usuario normal.

Hay gente que considera útil tener siempre "en segundo plano" una shell con permisos de root. Esto se puede conseguir con los comandos suspend, fg y jobs. Por ejemplo:

$ su
Password: [ Password de root ]
# suspend 1
[1]+  Stopped                 su 2
$
$ fg %1 3
#
		
1

Detenemos la shell con permisos de root y la dejamos "esperando".

2

Nos informa de que se detuvo, y le asigna el número de referencia 1 para recuperarla posteriormente.

3

Recuperamos la shell con permisos de root.

Mediante suspend podemos detener la shell con permisos de root que arrancamos antes mediante su y recuperarla cada vez que necesitemos permisos de root sin necesidad de teclear el password de nuevo. Escribiendo exit en la shell con permisos de root podríamos abandonarla definitivamente.

su nos permite también adquirir los permisos de otros usuarios del sistema siempre que tengamos su password:

usuario@maquina $ su otrousuario
Password: [ Password de "otrousuario" ]
otrousuario@maquina $
otrousuario@maquina $ exit
usuario@maquina $
		

La diferencia entre su usuario y su - usuario es, que mientras que con el primer comando simplemente adquirimos los permisos de usuario, con el segundo comando es como si estuviésemos haciendo login desde el principio con usuario, así, todas las variables de entorno y demás serán cargadas igual que si hubiésemos hecho login realmente. Esto también se aplica para root (su -). La shell que se arranca mediante la segunda forma se llama shell de login, y como puedes comprobar, no se puede suspender como hicimos anteriormente. Salimos de ellas también con exit.

El usuario root puede usar su o bien su - sin necesidad de introducir ningún password para adquirir en un shell los permisos de cualquier usuario del sistema.