Este artículo explora las diferencias entre sudo
y su
Comandos en Linux. También puede ver este video para aprender acerca de estos comandos. Convertirse en root permanentemente con su
es un conocido 'no-no' en el universo *nix. ¿Por qué? Porque convertirse en root con su
significa que usted es root, que es lo mismo que iniciar sesión en una terminal como usuario root con la contraseña de root. Y eso es peligroso por muchas razones.
[ También te puede interesar: Conceptos básicos de la línea de comandos de Linux:sudo]
Trabajar como root significa que tiene el poder de:
- Eliminar alguno o todos los archivos
- Cambiar los permisos de cualquiera o todos los archivos
- Cambiar el nivel de ejecución del sistema
- Alterar cuentas de usuario
- Montar o desmontar sistemas de archivos
- Eliminar o instalar software
- Crear, eliminar y modificar sistemas de archivos
Básicamente, puede hacer cualquier cosa en el sistema como usuario raíz. Es la cuenta administrativa todopoderosa. Y, a diferencia de otros sistemas operativos más habladores, no verá un "¿Está seguro?" cuadro de diálogo para asegurarse de que rm -rf *
el comando que acaba de emitir estaba en /opt/tmp
en lugar de en /
. Como puede imaginar, los errores cometidos como usuario root pueden ser irreversibles y devastadores. Hay una alternativa:sudo
.
sudo
sudo
, que es un acrónimo de superuser do o replace user do , es un comando que ejecuta un indicador elevado sin necesidad de cambiar su identidad. Dependiendo de su configuración en /etc/sudoers
archivo, puede emitir comandos individuales como root o como otro usuario. Para continuar ejecutando comandos con poder de root, siempre debe usar el comando sudo. Por ejemplo, si desea instalar Nginx paquete, ejecutas:
$ dnf install nginx
Pero verá un error si no es root o no está en el grupo sudo. En cambio, si ejecuta este comando:
$ sudo dnf install nginx
Se le pedirá que escriba su contraseña y luego puede ejecutar el comando si es parte del grupo sudo.
Una forma sencilla de cambiar a una sesión interactiva como usuario root es la siguiente:
$ sudo -i
La teoría detrás del uso de sudo es que el acto de emitir el comando sudo antes de ejecutar cualquier comando te hace pensar más en lo que estás haciendo y, con suerte, cometer menos errores con una cuenta que posee un poder ilimitado.
su
su
, por otro lado, es un acrónimo de cambiar de usuario o sustituir al usuario . Básicamente, está cambiando a un usuario en particular y necesita la contraseña del usuario al que está cambiando. La mayoría de las veces, la cuenta de usuario a la que cambia es la cuenta raíz, pero puede ser cualquier cuenta del sistema.
Por ejemplo, si escribe:
$ su -
En el ejemplo anterior, está cambiando a root y necesita la contraseña de root. El (-
) le proporciona el entorno de root (ruta y variables de shell) en lugar de simplemente darle poder de usuario root para un solo comando mientras mantiene su propio entorno.
$ su bryant
Para el segundo ejemplo, está cambiando a bryant , por lo que necesita la contraseña de Bryant a menos que sea root.
Si desea cambiar al bryant cuenta de usuario, incluida la ruta de Bryant y las variables de entorno, utilice (-
) cambiar:
$ su - bryant
El (-
) tiene el mismo efecto que iniciar sesión en un sistema directamente con esa cuenta de usuario. En esencia, te conviertes ese usuario.
Resumir
Recapitulando lo que has aprendido.
sudo
le permite emitir comandos como otro usuario sin cambiar su identidad- Necesitas tener una entrada en
/etc/sudoers
para ejecutar estos permisos restringidos sudo -i
lo lleva a una sesión interactiva como rootsu
significa cambiar a un usuario en particular- Solo escribiendo
su
cambia al usuario root sudo
le pedirá su contraseña, mientras quesu
le pedirá la contraseña del usuario al que está cambiando
[ ¿Quiere obtener más información sobre seguridad? Consulte la lista de verificación de cumplimiento y seguridad de TI. ]
Pero, ¿cuándo usas uno y no otro? Desde el sudo
la política se define en /etc/sudoers
, esto puede proporcionar poderosos controles de permisos. Desde sudo
puede hacer prácticamente todo lo que su
puede, yo diría que es mejor quedarse con sudo
a menos que esté trabajando con algunos códigos heredados que requieren el su
comando.