¿Cuál es la diferencia entre los comandos "su -s" y "sudo -s"?

23

¿Cuál es la diferencia entre los dos comandos de superusuario su -sy sudo -s?

Ambos dan un shell con acceso a la cuenta de superusuario.

Callum
fuente

Respuestas:

30

En la práctica, ambos te convertirán en el superusuario. Sin embargo, hacen cosas ligeramente diferentes, de maneras ligeramente diferentes.

Primero, lo su -cambia a un shell de inicio de sesión, mientras sudo -sque no lo hace. En la práctica, esto a menudo significa que las variables de entorno no se cambiarán a root's' sudo -s. Tenga en cuenta que puede ejecutar simplemente supara no obtener un shell de inicio de sesión o sudo -ipara obtener un shell de inicio de sesión [no en todas las versiones].

En segundo lugar, suy su -cambie a un nuevo usuario solicitándole que se autentique como el nuevo usuario. sudo -sy sudo -i(y solo con regularidad sudo foo) le permite ejecutar un comando para el que está preautorizado [ver /etc/sudoers], posiblemente solicitándole que confirme su ID actual .

Si desea ser realmente lindo, también puede ejecutar sudo su -, que solicitará iniciar sesión como root ( su -) ejecutado por el usuario root (la sudoparte).

Si el usuario root está bloqueado (como en Ubuntu), no podrá iniciar sesión como root usando su. En este caso, deberá usar sudo -sosudo -i

Mikeage
fuente
55
También vale la pena decir que en muchas distribuciones sudono se otorgan privilegios predeterminados a los usuarios habituales. En esos sistemas, sues la única opción.
Telemachus
12
su -s

Cambiará a un usuario (en este caso root) e iniciará el shell que especifique, o uno de los pocos métodos para determinar el shell. Esto es útil si desea usar zsh u otro shell como root realmente rápido ... y por alguna razón no está usando sudo.

sudo -s

Simplemente ejecuta un shell usando sudo, que le daría un shell raíz. También puedes pasarle un caparazón.

su -s es más antiguo, mucho más antiguo que el comando sudo -s. Supongo que el desarrollador está tratando de hacer que sea lo más fácil posible cambiar a usar sudo.

Mark Turner
fuente
9

su es un comando para cambiar a otro usuario, ya sea para ejecutar un shell o ejecutar un comando específico. Debe autenticarse como el otro usuario. Si desea su a root, necesita la contraseña de root.

sudo es un comando para ejecutar otro comando (opcionalmente un shell) como un usuario diferente. Debe autenticarse como su propio usuario . Un administrador especifica el permiso para usar sudo (y las cosas específicas que puede hacer con él) en el archivo sudoers.

Si le da a alguien acceso a su (por ejemplo, dándole la contraseña de root), puede hacer cualquier cosa con él: ejecutar otros comandos, abrir un shell, cambiar la contraseña, iniciar sesión de forma remota a través de ssh, etc. Básicamente, les está dando acceso a la otra cuenta, y 'su' es solo una cosa que pueden hacer con ella.

sudo es mucho más fino. Puede otorgar privilegios a un usuario o a un grupo. Puede permitir que un usuario o grupo realice sudo dentro de un período de tiempo determinado (por ejemplo, de lunes a viernes, de 9 a. M. A 5 p. M.). Puede especificar una lista específica de comandos que se les permite ejecutar (por ejemplo, solo / usr / local / bin / run_backup) o puede especificar un usuario específico al que se les permite ejecutar comandos como (por ejemplo, www, copia de seguridad, personal, etc. )

Además de su flexibilidad, sudo es una mejor solución en todos los casos, ya que no requiere acceso a nada que el usuario ya no tenga. Si le da acceso a sudo a alguien, puede revocarlo eliminando su línea en el archivo sudoers o eliminándola del grupo de sudoers. Si elimina su cuenta, su acceso desaparecerá.

Si les das la contraseña de root, incluso suponiendo que no hagan nada desagradable con ella, entonces la sabrán para siempre. Si tiene varias personas que necesitan acceso raíz para tareas administrativas, esto significa cambiar todas las contraseñas raíz cada vez que alguien se va, o asumir que está bien que tengan acceso completo a sus sistemas después de que se vaya.

Dan Udey
fuente
buena explicación de las diferencias entre los dos comandos su y sudo.
John aka hot2use
5
  • su le pedirá la contraseña de usuario root .
  • sudo le pedirá su contraseña (y debe estar autorizado para acceder a sudo para hacerlo).
badp
fuente
2
En general, este es el comportamiento predeterminado para sudo, pero también se puede configurar para pedirle la raíz u otra contraseña.
theotherrecibo el
2

De Wikipedia :

su (abreviatura de usuario sustituto o cambio de usuario) es un comando de Unix que se utiliza para ejecutar el shell de otro usuario sin cerrar sesión.

Un comando relacionado llamado sudo ejecuta un comando como otro usuario, pero observa un conjunto de restricciones sobre qué usuarios pueden ejecutar qué comandos y qué otros usuarios (generalmente en un archivo de configuración llamado / etc / sudoers, mejor editable por el comando visudo). A diferencia de su, sudo autentica a los usuarios contra su propia contraseña en lugar de la del usuario objetivo (para permitir la delegación de comandos específicos a usuarios específicos en hosts específicos sin compartir contraseñas entre ellos y al mismo tiempo mitiga el riesgo de terminales desatendidos).

Yaakov Ellis
fuente
2

Una cosa que no se dice completamente es esta: cuál puede usar a menudo depende de la distribución que esté usando y quién la ejecute. Uno u otro ( suo sudo) probablemente no esté configurado para uso completo de forma predeterminada. Entonces, por ejemplo, como algunas personas han mencionado, OS X y Ubuntu deshabilitan la cuenta raíz ( su) de forma predeterminada. Igualmente, Debian no otorga a los usuarios regulares ningún privilegio predeterminado parasudo . (En todos estos sistemas, puede cambiar estos valores predeterminados, pero solo si tiene algún tipo de privilegios administrativos para empezar. Supongo que estamos hablando de una situación que no es del servidor y usted administra la máquina ya que estamos en SU que SF, pero por las dudas.)

Finalmente, si desea usar sudode una manera más precisa, debe buscar man sudoerscómo editar el archivo / etc / sudoers . Sin embargo, nunca debe editarlo a mano. Use el programa visudo : le impedirá guardar sus ediciones a menos que sean al menos mínimamente sensatas. Es una gran protección contra errores simples que podrían bloquearlo de los privilegios de administrador de su propio sistema.

Telémaco
fuente
1

En sistemas donde la cuenta de superusuario está desactivada, como Mac OS X, suno funcionará;sudo -sserá.

Además, parece que no hay su -sdisponible, al menos en mi máquina.

jtbandes
fuente
Lo contrario es a menudo cierto. Es decir, en muchas distribuciones antiguas similares a Unix, los usuarios regulares no tienen privilegios predeterminados sudo(que ni siquiera siempre está instalado).
Telemachus
1

Esta introducción puede ayudarte. sues una abreviatura su rooty usted mantiene sus derechos como el otro usuario indefinidamente. Más peligroso, pero también más conveniente si está haciendo muchos comandos de acceso raíz durante un período de tiempo.

Nikhil Chelliah
fuente
1

Básicamente, su creará un nuevo shell de inicio de sesión con otros privilegios de usuario (inicio de sesión). sudo solo le permitirá ejecutar comandos temporalmente utilizando el usuario que especificó. En algunos UNIX como FreeBDS no hay opciones '-s'.

hendrasaputra
fuente