¿Por qué se prefiere uno sobre el otro en este ejemplo?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Proporcione enlaces a la documentación de Ubuntu.
¿Por qué se prefiere uno sobre el otro en este ejemplo?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Proporcione enlaces a la documentación de Ubuntu.
Respuestas:
El sudo su
comando significa "cambiar usuario" y le permite convertirse en otro usuario. Permite a un usuario permitido ejecutar un comando como superusuario u otro usuario, como se especifica en el archivo sudoers.
La opción -i (simular inicio de sesión inicial) ejecuta el shell especificado por la entrada de la base de datos de contraseñas del usuario objetivo como un shell de inicio de sesión. Esto significa que el shell leerá los archivos de recursos específicos de inicio de sesión como .profile o .login. Si se especifica un comando, se pasa al shell para su ejecución a través de la opción -c del shell. Si no se especifica ningún comando, se ejecuta un shell interactivo.
Fuente: ManPage
sudo su
, se le solicita su contraseña, no la contraseña de root. El usuario root ni siquiera necesita tener una contraseña. De todos modos, si un administrador está usando la contraseña de root, eso no implica que todos los usuarios habituales la conozcan.
sudo
se ejecuta su
como root y root puede su
a cualquier usuario sin conocer su contraseña. Los malentendidos fundamentales sobre cómo funciona el sistema merecen una OMI negativa.
sudo -i
tampoco pedirá la contraseña de root, por lo que no es relevante para la pregunta.
sudo su
solo cambia el usuario actual a root. La configuración del entorno (como PATH) sigue siendo la misma.
sudo -i
crea un entorno nuevo como si la raíz acabara de iniciar sesión.
La diferencia es más notable si usa otros usuarios. Después sudo su bob
serás bob, pero en el mismo lugar. Después sudo -i -u bob
será Bob, en el directorio de inicio de Bob, con el shell predeterminado de Bob y con Bob .profile
y cualquier otra secuencia de comandos de inicio de sesión que se haya ejecutado.
Ver man sudo
para más detalles de lo que -i
hace. Lamentablemente, man su
es ligero en los detalles.
Encontré una versión de man su
(desde login-1: 4.1.4.2 + svn3283-3ubuntu5.1) que tiene lo siguiente para decir:
$ PATH restablecer de acuerdo con las opciones /etc/login.defs ENV_PATH o ENV_SUPATH (ver más abajo);
$ IFS restablecer a "<space> <tab> <newline>", si se configuró.
Tenga en cuenta que el comportamiento predeterminado para el entorno es el siguiente:
Las variables de entorno $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH y $ IFS se restablecen.
Si no se usa --login, se copia el entorno, excepto las variables anteriores.
Si se usa --login, las variables de entorno $ TERM, $ COLORTERM, $ DISPLAY y $ XAUTHORITY se copian si se configuraron.
Otros entornos pueden ser configurados por módulos PAM.
Entonces, si y en qué medida sudo su
cambia el entorno depende de su distribución y configuración. Por sudo -i
lo tanto, es teóricamente más portátil.
su
hace ajustes del entorno de cambio, y puede ser utilizado para simular un inicio de sesión utilizando -
o -l
. Incluso sin -l
, $PATH
se cambia. ¡Pruebe estas afirmaciones antes de hacerlas! (¿Quiso decir que PWD
sigue siendo el mismo?)
sudo su -
y sudo -i
?
$PATH
cambia cuando lo uso su
sin sudo
(usando la contraseña de root). De acuerdo con info su
(que podría ser una mejor opción para vincular en su respuesta), de su
hecho lee la entrada de contraseña para el usuario en el que se está convirtiendo. Posiblemente el $PATH
cambio que estoy observando depende del sistema (estoy en Debian 7).
man su
(que es más largo que el que vinculaste) dice que es parte de shadow-utils 4.1.5.1
. Mi man
página también dice que $PATH
está configurado incluso si --preserve-environment
se usa. Así que supongo que realmente es solo una diferencia entre las diferentes versiones de su
.
/etc/pam.d/sudo
y /etc/pam.d/su
puede configurarse para hacer cosas completamente diferentes o exactamente las mismas.
El principal problema es una de las configuraciones del entorno (no tan sensatas).
El uso sudo su
del nuevo shell obtiene su entorno del usuario que emite el comando, lo que puede ser problemático.
Con sudo -i
usted obtienes una cáscara de raíz limpia.
Ver notas especiales sobre sudo y conchas
Queda por observar que rara vez es necesario crear un shell raíz.
sudo -i
son similares sudo su -
, que en realidad no obtiene su entorno del usuario que emite el comando.
sudo su
vs sudo -i
.