En este tutorial, aprendemos qué es el comando su (cambiar de usuario) en Unix/Linux y la diferencia entre los comandos su y su. Linux es un kernel de sistema operativo multiusuario, lo que significa que varios usuarios pueden iniciar sesión en un sistema Linux simultáneamente.
Puede cambiar entre diferentes usuarios en la línea de comandos con el comando su. El comando su significa 'usuario sustituto' o puede cambiar entre usuarios. Este comando cambia las credenciales de usuario por las de un usuario o raíz especificado (de forma predeterminada).
¿Qué está haciendo su comando?
El comando su, como se indicó anteriormente, cambiará las credenciales del usuario por las de otro usuario. Veamos un ejemplo
[raghu@redhat-server ~]$ su jack
Password:
[jack@redhat-server raghu]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
El comando id genera la información sobre el usuario actual. En el resultado anterior, puede ver el cambio de usuario. Cuando no se dan argumentos al comando su, cambia a usuario root por defecto. Las páginas man de Ubuntu han explicado más información.
[jack@redhat-server raghu]$ su
Password:
[root@redhat-server raghu]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Simulación de inicio de sesión con su -
Con su --login o su -l o simplemente el comando 'su -', puede cambiar de usuario como si fuera un inicio de sesión desde una terminal.
[raghu@redhat-server ~]$ su - jack
Password:
[jack@redhat-server ~]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Diferencia entre su y su-
La diferencia entre 'su' y 'su -' es que algunas variables de entorno, como la variable PATH, no cambian los valores con solo su (es decir, si se omite la opción -l o -). Es posible que algunos comandos no se ejecuten si PATH no está configurado correctamente. Por ejemplo, considere el siguiente escenario:
[jack@redhat-server ~]$ su root
Password:
[root@redhat-server jack]# fdisk -l
bash: fdisk: command not found
[root@redhat-server jack]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/jack/bin
Puede ver que los directorios sbin no están incluidos en la RUTA del usuario raíz. Por lo tanto, no ejecuta el comando fdisk. Ahora intentamos iniciar sesión con su - comando:
[jack@redhat-server ~]$ su -
Password:
[root@redhat-server ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1044 8281507+ 8e Linux LVM
[root@redhat-server ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Otra diferencia entre estos dos comandos son los scripts de inicio de sesión. Primero, analicemos algunos scripts de inicio de sesión:
Cuando un usuario inicia sesión en un sistema, se ejecutan los siguientes 4 archivos si las credenciales del usuario son legítimas:
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
Cuando inicia sesión con el comando 'su -', todos estos scripts se ejecutan. Pero con su, solo se ejecutan los scripts bashrc, es decir, /etc/bashrc y ~./bashrc se ejecutan.
En ubuntu, es posible que reciba un error de autenticación cuando ejecute el comando su. Recibe este error porque la cuenta raíz de ubuntu está deshabilitada de manera predeterminada.
user@host:~$ su
Password:
su: Authentication failure
En lugar de su usa sudo -i
o sudo
seguido de su orden.
Conclusión
En este tutorial, aprendimos la diferencia entre los comandos "su" y "su -" en Linux. Más información está disponible en man su. Espero que haya disfrutado de la lectura y deje sus sugerencias a continuación.
Leer también:
- 38 comandos básicos de Linux para aprender con ejemplos
- Cómo agregar un usuario a Sudoers en Debian