Hay muchas formas diferentes de obtener una sesión raíz en la terminal de Linux. Esto puede crear cierta confusión, ya que la mayoría de los usuarios principiantes que buscan obtener privilegios de root pueden no estar familiarizados con la forma en que cada comando puede obtener acceso de root, en qué se diferencian y cuándo importan estas diferencias. Aquí desglosamos cada uno de los muchos comandos diferentes que se utilizan para obtener acceso a la raíz en una terminal, explicamos cómo obtienen la raíz, cuándo usarlos y todo lo demás.
su
los su
El comando sustituye al usuario actual que el sistema está usando en el shell.
Puede cambiar a cualquier usuario escribiendo su
y agregando un nombre de usuario después de él. Esto le indicará al sistema que cambie (y esencialmente cierre la sesión) del usuario actual al especificado. Alternativamente, el su
El comando puede obtener acceso de root ingresando su
sin especificar nada después del comando.
«su» se usa mejor cuando un usuario quiere acceso directo a la cuenta raíz en el sistema. no pasa sudo
o algo por el estilo. En su lugar, se le pide que ingrese la contraseña del usuario raíz porque literalmente está iniciando sesión en él. Además, otras formas de obtener acceso raíz no tienen la ventaja de obtener también acceso al directorio de inicio raíz y al entorno raíz.
sudo su
Este comando solicita la contraseña del usuario actual en lugar de root.
Es esencialmente lo mismo que simplemente correr su
en el caparazón, excepto por una diferencia crucial. En lugar de decirle al sistema que “cambie de usuario” directamente, le está diciendo que ejecute el comando “su” como root. Cuando sudo su
se ejecuta, “.profile”, “.bashrc” y “/etc/profile” se iniciarán, al igual que ejecutar su
(o su root
). Si se ejecuta algún comando con sudo
frente a él, se le otorgan privilegios de root.
Aunque no hay una gran divergencia entre «sudo su» y «su», sudo su
sigue siendo un comando muy útil por una razón importante: cuando un usuario está ejecutando «su» para obtener acceso de root en un sistema, debe conocer la contraseña de root. La raíz se da con sudo su
solicitando la contraseña del usuario actual. Esto hace posible obtener la raíz sin la contraseña de raíz, lo que aumenta la seguridad.
sudo -i
Usando sudo -i
es prácticamente el mismo que el sudo su
comando con una excepción: no interactúa directamente con el usuario raíz.
Muy parecido sudo su
la -i
flag permite a un usuario obtener un entorno raíz sin tener que conocer la contraseña de la cuenta raíz. sudo -i
también es muy similar a usar sudo su
ya que leerá todos los archivos ambientales (.profile, etc.) y configurará el entorno dentro del shell.
Donde se diferencia de «sudo su» es que sudo -i
es una forma mucho más limpia de obtener root y un entorno root sin interactuar directamente con el usuario root. Para aclarar: Con sudo su
estás usando más de una raíz setuid
Comando en segundo plano. Esto hace que sea mucho más difícil averiguar qué variables ambientales se mantendrán y cuáles se cambiarán (al cambiar al entorno raíz). Esto no es cierto con sudo -i
. Debido a esto, la mayoría de las personas lo ven como el método preferido para obtener la raíz sin iniciar sesión directamente.
sudo-s
Este comando invoca un shell con su variable $SHELL.
los -s
el interruptor para el comando «sudo» lee la variable $SHELL del usuario actual que ejecuta los comandos. Este comando funciona como si el usuario estuviera ejecutando sudo /bin/bash
. Sudo -s
es un shell de estilo «sin inicio de sesión». A diferencia de un comando como sudo -i
o sudo su
, el sistema no leerá ningún archivo ambiental. Cuando un usuario le dice al shell que se ejecute sudo -s
, obtiene la raíz pero no cambiará el usuario o el entorno del usuario. Su hogar no será el hogar raíz, etc.
Este comando se usa mejor cuando el usuario no quiere cambiar a root pero quiere un shell interactivo con su valor de entorno $SHELL. Otros comandos mencionados anteriormente obtienen acceso a la raíz, pero tocan los archivos ambientales raíz y permiten a los usuarios un acceso más completo a la raíz (lo que puede ser un problema de seguridad).
Preguntas frecuentes
1. ¿Qué comando debo usar?
Cada comando tiene su caso de uso. Lo importante aquí es entender qué hace cada comando y cuándo usarlos. Tal y como está, sudo -i
es la forma más práctica y limpia de obtener un entorno raíz. Por otra parte, los que utilizan sudo -s
descubrirán que pueden obtener un shell raíz sin la capacidad de tocar el entorno raíz, algo que tiene beneficios de seguridad adicionales.
2. ¿Acceder a la raíz puede dañar mi sistema?
En algunos casos, sí. A menos que esté absolutamente seguro de que necesita acceder a la raíz para todo en una sesión de terminal en particular, a menudo es mejor simplemente escribir sudo
seguido de un comando si desea acceder a la raíz para ese comando en particular. Por ejemplo, escribir sudo apt install vlc
en cualquier versión de Linux basada en Debian le diría al sistema operativo que acceda a la raíz solo para ejecutar el administrador de paquetes APT para instalar VLC.
Una advertencia muy importante para correr sudo -i
o cualquier otra variante que hayamos discutido anteriormente en lugar de escribir sudo
antes de cada comando que desea ejecutar como root es que el primero no registra su historial de comandos en /var/log/auth.log
. Si te equivocas, no puedes volver atrás y revisar lo que hiciste para poder corregirlo. Tendrá que operar sin memoria, ya que las sesiones raíz no se registran.
3. Cuando escribo «sudo» antes de un comando, ¿qué variante de «sudo su» estoy ejecutando?
Escribiendo sudo
para ejecutar un comando (es decir, lo está escribiendo en la misma línea que el comando que desea ejecutar), básicamente lo está ejecutando bajo un shell raíz interactivo. Esto sería lo que sudo -s
el comando independiente lo hace.
Terminando
Realmente no hay un comando en esta lista que sea 100% el mejor. A medida que los usuarios se sientan más cómodos con la línea de comandos, deberán tener en cuenta todas las formas de obtener root (y hay muchas) y sopesar los pros y los contras y actuar en consecuencia. Espero que con la ayuda de este artículo estas decisiones sean más fáciles de tomar. Si desea obtener más información sobre los comandos, lea este artículo sobre comandos útiles de Linux para enumerar el contenido de un directorio.