¿Existe alguna diferencia entre sudo su - root y sudo -u root -H /bin/bash?

¿Existe alguna diferencia entre sudo su - root y sudo -u root -H /bin/bash?

Como dice el título, ¿hay alguna diferencia entre estos dos comandos?

sudo su - root
sudo -u root -H /bin/bash

Estoy usando GNU/Linux, si eso hace la diferencia.

Respuesta1

Si desea convertirse en root, la mejor manera de hacerlo es sudo -i, que simula el inicio de sesión inicial (proporcionándole todas las rutas y variables asociadas con un inicio de sesión root). Si desea iniciar sesión sin obtener los usuarios root.archivos, podrías usarlo sudo su(no es necesario especificar el usuario root).

Respuesta2

su - # causes the user to run a login shell aka bash --login
     # the same as if the user had logged in as the root from the login prompt

y sudo su -es lo mismo que sudo su - rootespecificar root es redundante.

sudo -u root -H /bin/bashnuevamente -u root, es redundante, sudose ejecuta como root de forma predeterminada pero se -H /bin/bashejecuta como sudoer, las variables de entorno SUDO_USER, SUDO_UID y SUDO_COMMAND están configuradas en el nombre/uid de las personas que llaman y bash respectivamente.

Pero en este caso, bash no se ejecuta como shell de inicio de sesión.

Respuesta3

Obviamente, pueden diferir si el shell raíz no es /bin/bash; esto es posible para entornos Linux pequeños o integrados, o tradicional para sistemas BSD que prefieren /bin/[t]csh para el usuario root. Además, `su -' elimina todo el entorno excepto algunas variables relacionadas con la terminal. El comportamiento de sudo en el entorno es configurable (consulte env_reset en /etc/sudoers). Así que cuidado con los detalles...

Respuesta4

La mayor diferencia entre los dos comandos que enumeró es que la ejecución su -hará que el shell sea un shell de inicio de sesión. Eso significa que se ejecutarán los scripts de inicio de sesión del shell de root (.bash_profile por ejemplo, si es bash), el PWD se establecerá en $HOME y se inicializarán ciertas partes del entorno del usuario. sudo bashsimplemente ejecuta un nuevo shell como shell del usuario de destino, y -H simplemente inicializa una variable, $HOME, en el directorio de inicio del usuario de destino. Otras variables no se establecerán y algunas se transferirán al nuevo shell, como se define en su política de sudo.

información relacionada