Ya lo leí del manual pero no puedo ver la diferencia.
su - cambie la identificación de usuario o conviértase en superusuario
sudo -s [command]
La -sopción (shell) ejecuta el shell especificado por la variable de entorno SHELL si está configurado o el shell como se especifica en passwd (5). Si se especifica un comando, se pasa al shell para su ejecución. De lo contrario, se ejecuta un shell interactivo.
sudo -i desaparecer descripción en manual

su userpara iniciar sesión desde shells no confiables, perosu - user. Ver unix.stackexchange.com/q/7013/8250sudo -ies malo, pero que sin duda puede f *** cosas usarloRespuestas:
La principal diferencia entre estos comandos está en la forma en que restringen el acceso a sus funciones.
su(que significa "usuario sustituto" o "cambiar de usuario") : hace exactamente eso, inicia otra instancia de shell con privilegios del usuario objetivo. Para asegurarse de que tiene los derechos para hacerlo, le solicita la contraseña del usuario objetivo . Entonces, para convertirse en root, necesita saber la contraseña de root. Si hay varios usuarios en su máquina que necesitan ejecutar comandos como root, todos deben conocer la contraseña de root; tenga en cuenta que será la misma contraseña. Si necesita revocar los permisos de administrador de uno de los usuarios, debe cambiar la contraseña de root y decírselo solo a aquellas personas que necesitan mantener el acceso: desordenado.sudo(hmm ... ¿cuál es el mnemónico? ¿Super-User-DO?) es completamente diferente. Utiliza un archivo de configuración (/ etc / sudoers) que enumera qué usuarios tienen derechos para acciones específicas (ejecutar comandos como root, etc.) Cuando se invoca, solicita la contraseña del usuario que lo inició , para garantizar la persona en el terminal es realmente el mismo "Joe" que aparece en la lista/etc/sudoers. Para revocar los privilegios de administrador de una persona, solo necesita editar el archivo de configuración (o eliminar al usuario de un grupo que figura en esa configuración). Esto da como resultado una gestión de privilegios mucho más limpia.Como resultado de esto, en muchos sistemas basados en Debian, el
rootusuario no tiene una contraseña establecida, es decir, no es posible iniciar sesión como root directamente.Además,
/etc/sudoerspermite especificar algunas opciones adicionales, es decir, el usuario X solo puede ejecutar el programa Y, etc.La
sudo sucombinación de uso frecuente funciona de la siguiente manera: primerosudole pide su contraseña y, si se le permite hacerlo, invoca el siguiente comando (su) como superusuario. Debido a quesues invocado porroot, no requiere que ingrese la contraseña del usuario objetivo. Por lo tanto, lesudo supermite abrir un shell como otro usuario (incluida la raíz), si el/etc/sudoersarchivo le permite el acceso de superusuario .fuente
sucomo "cambiar de usuario", sino siempre como superusuario; El comportamiento predeterminado sin el nombre de usuario de otro (aunque tiene sentido). De wikipedia : "El comando su, también conocido como superusuario [1] ya en 1974, también se ha denominado" usuario sustituto "," usuario falso "o" usuario establecido "porque permite cambiar la cuenta asociada con el actual terminal (ventana) ".sudo su?sudole permite ejecutar comandos en su propia cuenta de usuario con privilegios de root.sule permite cambiar de usuario para que realmente haya iniciado sesión como root.sudo -sejecuta un shell con privilegios de root.sudo -itambién adquiere el entorno del usuario root.Para ver la diferencia entre
suysudo -s, hazcd ~y luegopwddespués de cada uno de ellos. En el primer caso, estarás en el directorio de inicio de root, porque eres root. En el segundo caso, estarás en tu propio directorio personal, porque eres tú mismo con privilegios de root.Hay más discusión sobre esta pregunta exacta aquí .
fuente
cd ~resultados sean diferentes es resultado de que sudo -s no configura la variable de entorno $ HOME.sudoersarchivo controla quién puede ejecutar qué comando como otro usuario, pero eso sucede antes de que se ejecute el comando. Sin embargo, una vez que se le permitió iniciar un proceso como, por ejemplo, root: el proceso en ejecución tiene el UID de root y tiene un acceso completo al sistema, no hay forma de que sudo restrinja eso. Una vez más, siempre eres tú mismo o root, no hay "mitad y mitad". Por lo tanto, si elsudoersarchivo le permite ejecutar el shell como root, los permisos en ese shell serían indistinguibles de un shell raíz "normal".Esta respuesta es un engaño de mi respuesta en un engaño de esta pregunta , ¡pon aquí la respuesta canónica para que la gente pueda encontrarla!
La principal diferencia entre
sudo -iysudo -ses:sudo -ile da el entorno raíz, es decir,~/.bashrcse ignora susudo -sle brinda el entorno del usuario, por lo que~/.bashrcse respeta suAquí hay un ejemplo, puede ver que tengo una aplicación
lslen mi~/.bin/directorio a la que se puede accedersudo -spero no consudo -i. Tenga en cuenta también que la solicitud de Bash cambia como lo hará consudo -ipero no consudo -s:Aunque
sudo -ses conveniente para darle el entorno con el que está familiarizado, recomiendo el usosudo -ipor dos razones:.bashrc.fuente
sudo -sun entorno con el que el usuario esté familiarizado?susolicita la contraseña del usuario "root".sudosolicita su propia contraseña (y también comprueba si tiene permiso para ejecutar comandos como root, que se configura a través de/etc/sudoers- de forma predeterminada, todas las cuentas de usuario que pertenecen a los grupos "admin" o "sudo" pueden usar sudo).sudo -slanza un shell como root, pero no cambia su directorio de trabajo.sudo -isimula un inicio de sesión en la cuenta raíz: su directorio de trabajo será/root, y la raíz,.profileetc. se obtendrá como si estuviera en el inicio de sesión.fuente
sudo -ses casi igual asu($ HOME es diferente) ysudo -ies igual asu -En Ubuntu o un sistema relacionado, no encuentro mucho uso
suen el sentido tradicional de superusuario.sudomaneja ese caso mucho mejor. Sin embargo,sues excelente para convertirse en otro usuario en situaciones únicas en las que la configuración de sudoers sería una tontería.Por ejemplo, si estoy reparando mi sistema desde un CD / USB en vivo, a menudo montaré mi disco duro y otras cosas necesarias
chrooten el sistema. En tal caso, mi primer comando es generalmente:De esa manera, no estoy operando como root, sino como mi usuario normal, y luego lo uso
sudosegún corresponda.fuente
suPide contraseña de root, se convierte en root, abre un shell interactivo sin inicio de sesión.su -Pide contraseña de root, se convierte en root, abre un shell de inicio de sesión interactivo.sudo -sPide sus contraseñas, se convierte en root, abre un shell interactivo sin inicio de sesión.sudo -iPide sus contraseñas, se convierte en root, abre un shell de inicio de sesión interactivo.La mejor práctica es usar estos dos.
sudo suPide su contraseña, se convierte en root por un segundo y se ejecutasucomo root`.sudo su -Pide su contraseña, se convierte en root por un segundo y se ejecutasu -como root.Entonces, en este caso, está
suutilizandosudoy no tiene que saber la contraseña real de root. Los resultados son los mismos quesuysu -.fuente