¿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.
command-line
sudo
chili555
fuente
fuente
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
fuente
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 ejecutasu
como root y root puedesu
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éssudo -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:Entonces, si y en qué medida
sudo su
cambia el entorno depende de su distribución y configuración. Porsudo -i
lo tanto, es teóricamente más portátil.fuente
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 quePWD
sigue siendo el mismo?)sudo su -
ysudo -i
?$PATH
cambia cuando lo usosu
sinsudo
(usando la contraseña de root). De acuerdo coninfo su
(que podría ser una mejor opción para vincular en su respuesta), desu
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 deshadow-utils 4.1.5.1
. Miman
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 desu
./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.
fuente
sudo -i
son similaressudo su -
, que en realidad no obtiene su entorno del usuario que emite el comando.sudo su
vssudo -i
.