¿Qué hace realmente "sudo -s"?

26

Estoy usando ubuntu 10.04.

Noté que después de ejecutar " sudo -s " en la terminal, el mensaje cambió de

" XXX @ XXX "

a

" root @ XXX ",

Parece que cambió a privilegio de root.

Pero cuando reviso la documentación del comando "sudo" aquí , explica otra historia de "sudo -s", ¿alguien puede explicarme qué está haciendo exactamente " sudo -s "?

Leem
fuente
66
Deberías preguntar esto en askubuntu.com
77
¿Por qué askubuntu.com? sudoUbuntu es casi específica ...
David Sherohman
posible duplicado de la diferencia entre los comandos "su -s" y "sudo -s"
Linker3000

Respuestas:

9

Los dos no son realmente inconsistentes: el sudocomando siempre cambia al usuario, ya sea a la raíz, o al usuario que especifique con el -uinterruptor. Todo lo que -shace es proporcionar un acceso directo para iniciar un shell como ese usuario. Es realmente equivalente a:

sudo $SHELL

excepto que probablemente retrocederá /bin/sho algo así si SHELLno está configurado.

TomH
fuente
6

sudo -sejecuta el shell especificado en su $SHELLvariable de entorno como superusuario / raíz. Puede especificar otro usuario usando -u.

La $SHELLvariable de entorno contiene la ruta al shell de inicio de sesión predeterminado del usuario. La configuración real para el programa de shell predeterminado generalmente está en etc/passwd. Dependiendo de lo que haya hecho en su sesión actual, la variable $ SHELL puede no contener el programa de shell que está utilizando actualmente. Si inicia sesión automáticamente con zsh, por ejemplo, pero luego invoca bash, $ SHELL no cambiará /bin/zsh.

Mostrar el usuario actual y el programa de shell: echo $(whoami) is logged in and shell is $0

  • whoami imprime el nombre de usuario con el que trabaja el usuario.
  • $0 contiene el nombre / ruta del programa actualmente en ejecución (programa de shell en este caso).
RKelley
fuente
3

Del manual:

sudo permite a un usuario permitido ejecutar un comando como superusuario u otro usuario, como se especifica en el archivo sudoers.

-s Shell, ejecuta el shell especificado por la variable de entorno SHELL si está configurado o el shell como se especifica en passwd (5).

Más en serio, los sudo -s ejecutan una variable de entorno de shell. Como no agregó ninguna variable, se ejecuta como se especifica en passwd y, por lo tanto, lo conecta como root.

Anarko_Bizounours
fuente
1
No es obvio en el manual que si no proporciona un usuario, el valor predeterminado es root. Tendría que leer la descripción de la -uopción para aprender eso. Pero para alguien que no está familiarizado sudo, no sabrían mirar -u.
wisbucky
0

Parece que está creando otra instancia del shell encima del shell actual, pero con privilegios de root. Apuesto a que después de hacerlo, sudo -ssi escribe exit, volverá al shell original.

Noah Duncan
fuente
-1

sudo -s le permite ejecutar un comando para el que está preautorizado [vea / etc / sudoers], posiblemente solicitándole que confirme su ID actual.

Eric Herlitz
fuente