¿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 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
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 ejecuta sucomo root y root puede sua 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 -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 bobserás bob, pero en el mismo lugar. Después sudo -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:
$ 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 sucambia el entorno depende de su distribución y configuración. Por sudo -ilo 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 PWDsigue siendo el mismo?)
sudo su -y sudo -i?
$PATHcambia cuando lo uso susin 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 suhecho 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 de shadow-utils 4.1.5.1. Mi manpá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 de su.
/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.
sudo -ison similares sudo su -, que en realidad no obtiene su entorno del usuario que emite el comando.
sudo suvs sudo -i.