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 -s
opció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 user
para iniciar sesión desde shells no confiables, perosu - user
. Ver unix.stackexchange.com/q/7013/8250sudo -i
es 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
root
usuario no tiene una contraseña establecida, es decir, no es posible iniciar sesión como root directamente.Además,
/etc/sudoers
permite especificar algunas opciones adicionales, es decir, el usuario X solo puede ejecutar el programa Y, etc.La
sudo su
combinación de uso frecuente funciona de la siguiente manera: primerosudo
le pide su contraseña y, si se le permite hacerlo, invoca el siguiente comando (su
) como superusuario. Debido a quesu
es invocado porroot
, no requiere que ingrese la contraseña del usuario objetivo. Por lo tanto, lesudo su
permite abrir un shell como otro usuario (incluida la raíz), si el/etc/sudoers
archivo le permite el acceso de superusuario .fuente
su
como "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
?sudo
le permite ejecutar comandos en su propia cuenta de usuario con privilegios de root.su
le permite cambiar de usuario para que realmente haya iniciado sesión como root.sudo -s
ejecuta un shell con privilegios de root.sudo -i
también adquiere el entorno del usuario root.Para ver la diferencia entre
su
ysudo -s
, hazcd ~
y luegopwd
despué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.sudoers
archivo 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 elsudoers
archivo 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 -i
ysudo -s
es:sudo -i
le da el entorno raíz, es decir,~/.bashrc
se ignora susudo -s
le brinda el entorno del usuario, por lo que~/.bashrc
se respeta suAquí hay un ejemplo, puede ver que tengo una aplicación
lsl
en mi~/.bin/
directorio a la que se puede accedersudo -s
pero no consudo -i
. Tenga en cuenta también que la solicitud de Bash cambia como lo hará consudo -i
pero no consudo -s
:Aunque
sudo -s
es conveniente para darle el entorno con el que está familiarizado, recomiendo el usosudo -i
por dos razones:.bashrc
.fuente
sudo -s
un entorno con el que el usuario esté familiarizado?su
solicita la contraseña del usuario "root".sudo
solicita 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 -s
lanza un shell como root, pero no cambia su directorio de trabajo.sudo -i
simula un inicio de sesión en la cuenta raíz: su directorio de trabajo será/root
, y la raíz,.profile
etc. se obtendrá como si estuviera en el inicio de sesión.fuente
sudo -s
es casi igual asu
($ HOME es diferente) ysudo -i
es igual asu -
En Ubuntu o un sistema relacionado, no encuentro mucho uso
su
en el sentido tradicional de superusuario.sudo
maneja ese caso mucho mejor. Sin embargo,su
es 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
chroot
en 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
sudo
según corresponda.fuente
su
Pide 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 -s
Pide sus contraseñas, se convierte en root, abre un shell interactivo sin inicio de sesión.sudo -i
Pide 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 su
Pide su contraseña, se convierte en root por un segundo y se ejecutasu
como root`.sudo su -
Pide su contraseña, se convierte en root por un segundo y se ejecutasu -
como root.Entonces, en este caso, está
su
utilizandosudo
y no tiene que saber la contraseña real de root. Los resultados son los mismos quesu
ysu -
.fuente