Respuestas:
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 -s
que 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 su
para no obtener un shell de inicio de sesión o sudo -i
para obtener un shell de inicio de sesión [no en todas las versiones].
En segundo lugar, su
y su -
cambie a un nuevo usuario solicitándole que se autentique como el nuevo usuario. sudo -s
y 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 sudo
parte).
Si el usuario root está bloqueado (como en Ubuntu), no podrá iniciar sesión como root usando su
. En este caso, deberá usar sudo -s
osudo -i
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.
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.
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).
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 ( su
o 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 sudo
de una manera más precisa, debe buscar man sudoers
có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.
En sistemas donde la cuenta de superusuario está desactivada, como Mac OS X, su
no funcionará;sudo -s
será.
Además, parece que no hay su -s
disponible, al menos en mi máquina.
sudo
(que ni siquiera siempre está instalado).
Esta introducción puede ayudarte. su
es una abreviatura su root
y 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.
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'.
sudo
no se otorgan privilegios predeterminados a los usuarios habituales. En esos sistemas,su
es la única opción.