Es por esto que vamos a desmontar cada uno de los muchos comandos diferentes que se utilizan para obtener acceso root en un terminal. Explicaremos exactamente cómo obtienen root, cuándo utilizarlos y todo lo que hay entre ellos.
su
El comando su sustituye al usuario actual en uso por el sistema en el shell. Puede cambiar a cualquier usuario tomando su y añadiendo un nombre de usuario con él. Esto le dirá al sistema que cambie (y esencialmente salga) del usuario actual al especificado. Alternativamente, el comando su puede acceder como root introduciendo su sin especificar nada después del comando.
«Su» se usa mejor cuando un usuario quiere acceso directo a la cuenta de root en el sistema. No pasa a través de la puerta nada de eso. En su lugar, la contraseña del usuario root debe ser conocida y utilizada para iniciar sesión con. Además, otras formas de obtener root no tienen el beneficio de obtener acceso al directorio raíz y al entorno raíz.
sudo su
Este comando es esencialmente lo mismo que ejecutar su en el shell. En lugar de decirle al sistema que «cambie de usuario» directamente, le está diciendo que ejecute el comando «su» como root. Cuando se ejecuta sudo su, se inician «.profile,» «.bashrc» y «/etc/profile», de forma muy parecida a ejecutar su (o su root). Esto se debe a que si se ejecuta cualquier comando con sudo delante, es un comando al que se le dan privilegios de root.
Aunque no hay mucha diferencia con «su,» sudo suis 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 forma en que se da a root con sudo su es solicitando la contraseña del usuario actual. Esto hace posible obtener root sin la contraseña de root, lo que aumenta la seguridad.
sudo -i
Usar sudo -i es virtualmente lo mismo que el comando sudo su. Los usuarios pueden obtener root con «sudo» y no cambiando al usuario root. Al igual que sudo su, la bandera -i permite a un usuario obtener un entorno de root sin tener que conocer la contraseña de la cuenta de root. sudo -i también es muy similar al uso de sudo su en el sentido de que leerá todos los archivos ambientales (.profile, etc.) y configurará el entorno dentro del shell con él.
Donde difiere de «sudo su» es que el sudo -i es una forma mucho más limpia de obtener root y un entorno de root sin interactuar directamente con el usuario root. ¿Cómo? Con sudo suyos estás usando más de un comando de root setuid. Este hecho hace que sea mucho más difícil averiguar qué variables ambientales se mantendrán y cuáles cambiarán (al inundar el entorno de las raíces). Esto no es cierto con el sudo -i, y es por esto que la mayoría de la gente lo ve como el método preferido para obtener root sin tener que iniciar sesión directamente.
sudo -s
El interruptor -s 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 «no-login». Esto significa que a diferencia de un comando como sudo -ior sudo sudo, el sistema no leerá ningún archivo de entorno. Esto significa que cuando un usuario le dice a la shell que ejecute sudo -s, obtiene root pero no cambiará al usuario o al entorno de usuario. Su hogar no será el hogar raíz, etc.
Este comando se utiliza mejor cuando el usuario no desea tocar root en absoluto y sólo desea un intérprete de comandos de raíz para facilitar la ejecución del comando. Otros comandos mencionados anteriormente obtienen acceso de root, pero tocan los archivos ambientales de root, y permiten a los usuarios un acceso más completo a root (lo que puede ser un problema de seguridad).
Conclusión: ¿Qué comando debo usar?
Cada comando tiene su caso de uso. Lo importante aquí es entender qué hace cada comando y cuándo utilizarlos. Tal como está, sudo -i es la forma más práctica y limpia de obtener un entorno de raíces. Por otro lado, los usuarios de sudo -s encontrarán que pueden obtener un shell de raíz sin la capacidad de tocar el entorno de raíz, algo que tiene beneficios de seguridad añadidos.
Realmente no hay ningún comando en esta lista que sea 100% mejor. A medida que los usuarios se sientan más cómodos con la línea de comandos, tendrán que 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.
¿De qué manera prefieres obtener acceso root en Linux? Cuéntanos más abajo!
Imagen: blog.david-jensen.com