¿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 sucomando 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.sudose ejecutasucomo root y root puedesua cualquier usuario sin conocer su contraseña. Los malentendidos fundamentales sobre cómo funciona el sistema merecen una OMI negativa.sudo -itampoco pedirá la contraseña de root, por lo que no es relevante para la pregunta.sudo susolo cambia el usuario actual a root. La configuración del entorno (como PATH) sigue siendo la misma.sudo -icrea 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 bobserás bob, pero en el mismo lugar. Despuéssudo -i -u bobserá Bob, en el directorio de inicio de Bob, con el shell predeterminado de Bob y con Bob.profiley cualquier otra secuencia de comandos de inicio de sesión que se haya ejecutado.Ver
man sudopara más detalles de lo que-ihace. Lamentablemente,man sues 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 sucambia el entorno depende de su distribución y configuración. Porsudo -ilo tanto, es teóricamente más portátil.fuente
suhace ajustes del entorno de cambio, y puede ser utilizado para simular un inicio de sesión utilizando-o-l. Incluso sin-l,$PATHse cambia. ¡Pruebe estas afirmaciones antes de hacerlas! (¿Quiso decir quePWDsigue siendo el mismo?)sudo su -ysudo -i?$PATHcambia cuando lo usosusinsudo(usando la contraseña de root). De acuerdo coninfo su(que podría ser una mejor opción para vincular en su respuesta), desuhecho lee la entrada de contraseña para el usuario en el que se está convirtiendo. Posiblemente el$PATHcambio 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. Mimanpágina también dice que$PATHestá configurado incluso si--preserve-environmentse usa. Así que supongo que realmente es solo una diferencia entre las diferentes versiones desu./etc/pam.d/sudoy/etc/pam.d/supuede 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 sudel nuevo shell obtiene su entorno del usuario que emite el comando, lo que puede ser problemático.Con
sudo -iusted 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 -ison similaressudo su -, que en realidad no obtiene su entorno del usuario que emite el comando.sudo suvssudo -i.