Con el comando su, cualquier usuario que conozca la contraseña de root puede "hacerse root" y hacer cualquier cosa que el usuario root pueda hacer. Una cuenta que usa "su - root" es esencialmente el administrador del servidor. Esto es a menudo mucho más poder del que debería delegarse a los usuarios. Una mejor práctica es delegar funciones específicas a los usuarios en lugar de otorgar privilegios de raíz en todo el sistema.
El comando sudo permite al administrador del servidor delegar comandos específicos a usuarios específicos sin otorgarles privilegios completos en el servidor. La delegación se realiza en el archivo /etc/sudoers mediante el editor visudo. Los usuarios y grupos pueden recibir comandos específicos para ejecutar con el fin de cumplir con sus responsabilidades sin tener privilegios de administrador completos.
Sintaxis
La sintaxis del comando sudo es:
$ sudo [options] {command}
Si encuentra el siguiente error mientras ejecuta el comando sudo:
sudo: command not found
puede intentar instalar el paquete sudo como se muestra a continuación según su elección de distribución.
Distribución | Comando |
---|---|
Debian | apt-get install sudo |
Ubuntu | apt-get install sudo |
Alpino | apk agregar sudo |
Arco Linux | pacman -S sudo |
Kali Linux | apt-get install sudo |
Cent OS | yum instalar sudo |
Fedora | dnf instalar sudo |
Raspbian | apt-get install sudo |
Ejemplos de comandos sudo
1. Ejecute un comando como superusuario:
$ sudo less /var/log/syslog
2. Edite un archivo como superusuario con su editor predeterminado:
$ sudo --edit /etc/fstab
3. Ejecute un comando como otro usuario y/o grupo:
$ sudo --user=user --group=group id -a
4. Repita el último comando con el prefijo `sudo` (solo en `bash`, `zsh`, etc.):
$ sudo !!
5. Inicie el shell predeterminado con privilegios de superusuario y ejecute archivos específicos de inicio de sesión (`.profile`, `.bash_profile`, etc.):
$ sudo --login
6. Inicie el shell predeterminado con privilegios de superusuario sin cambiar el entorno:
$ sudo --shell
7. Inicie el shell predeterminado como el usuario especificado, cargue el entorno del usuario y lea los archivos específicos de inicio de sesión (`.profile`, `.bash_profile`, etc.):
$ sudo --login --user=user
8. Enumere los comandos permitidos (y prohibidos) para el usuario que realiza la invocación:
$ sudo --list
Conclusión
¿Cómo funciona exactamente el programa sudo can-do-anything? ¡Es más simple de lo que piensas! Consulte el siguiente código:
$ which sudo /usr/bin/sudo $ ls -l $(which sudo) -rwsr-xr-x 1 root root 145040 Jun 13 2022 /usr/bin/sudo
Notamos que el ejecutable binario sudo es realmente un programa setuid-root. Así que piénselo:cada vez que ejecuta un programa con sudo, el proceso sudo se ejecuta con un privilegio de root de inmediato, sin contraseña, sin problemas. Pero, claro, por seguridad, el usuario debe ingresar la contraseña; una vez que lo ingresan correctamente, sudo continúa la ejecución y ejecuta el comando que desea, como root. Si el usuario no ingresa la contraseña correctamente (generalmente dentro de los tres intentos), sudo aborta la ejecución.