Debian derechos de superusuario (sudo, visudo)
Información general
Linux Los sistemas operativos implementan el principio de diferenciar los privilegios de usuario, lo que significa que las diferentes cuentas tienen diferentes cantidades de derechos de acceso a directorios, archivos y programas. Los derechos máximos se otorgan a la cuenta raíz incorporada. Las cuentas de usuario recién creadas suelen tener restricciones significativas para acceder a los archivos de configuración del sistema, administrar servicios e instalar y eliminar paquetes de software. Sin embargo, no se recomienda trabajar en el sistema operativo con la cuenta raíz, principalmente por razones de seguridad. En este caso, la cuenta raíz sudo La utilidad de línea de comandos viene al rescate.
El comando sudo permite ejecutar comandos individuales con mayores privilegios (por defecto, con derechos de root) utilizando una cuenta sin privilegios. Veamos qué se requiere para que esta utilidad funcione.
Instalacion y configuracion
In Ubuntu OS, sudo está activado de forma predeterminada, y en Debian, si no se seleccionó el paquete correspondiente durante el proceso de instalación, lo más probable es que la siguiente imagen sea:
root@debian10:~# sudo
-bash: sudo: command not found
Por lo tanto, debe instalar el paquete que falta. Actualice la información del repositorio e instale sudo:
apt-get update
apt-get install sudo
Estamos esperando el final del proceso:

Después de una instalación exitosa, deberá configurar sudo para determinar qué usuarios o grupos podrán usar la escalada de privilegios y en qué medida. Todos estos ajustes se almacenan en el archivo de configuración. / etc / sudoers, sin embargo, se desaconseja encarecidamente realizar cambios directamente en él. Para estos fines, se utiliza un comando especial:
visudo
que lanza un editor de texto con un archivo de configuración:

Dos líneas se encargan de otorgar derechos:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
La primera línea establece los derechos para la cuenta raíz, la segunda establece los derechos para los miembros del grupo sudo que se creó cuando se instaló el paquete (el % firmar delante del nombre significa que el nombre pertenece a un grupo de usuarios).
En consecuencia, tenemos dos formas principales de otorgar a la cuenta de usuario el derecho de uso sudo:
Agregue una cuenta de usuario (por ejemplo, usuario) al grupo sudo en el servidor:
usermod –a –G sudo user
Después de cambiar la membresía del grupo, deberá volver a iniciar sesión en esta cuenta para aplicar la nueva configuración. Este método se recomienda en los casos en que el usuario debe tener todos los derechos.
Cree una nueva entrada en el archivo, por ejemplo, para la cuenta de usuario. Añadimos una línea similar a root:
user ALL=(ALL:ALL) ALL
Se recomienda agregar una nueva entrada en los casos en que se ajustará la lista de privilegios (más sobre esto más adelante). Si hicimos cambios en el archivo, debemos guardarlos presionando el atajo de teclado Ctrl-O y salir del editor - Ctrl-X.
Ahora puedes comprobar el correcto funcionamiento:
user@debian10:~$ sudo cat /etc/sudoers
[sudo] password for user:
El comando sudo solicita la contraseña del usuario actual (en este caso, usuario): ingrésela y, si todo se hace correctamente, veremos el contenido del archivo de configuración del sistema.
Sintonia FINA
De esta forma, un usuario normal puede ejecutar comandos con los derechos de la cuenta root sin conocer su contraseña. Esto es muy cómodo, pero puede resultar inseguro: ¿es posible limitar el rango de comandos que se pueden ejecutar con sudo? Sí, y el mismo archivo de configuración nos ayudará con esto. Iniciamos visudo nuevamente y comprendemos más. Nos interesan los parámetros especificados después del nombre de usuario:

Los analizaremos con más detalle:
- TODO= (ALL: ALL) ALL: el primer parámetro determina a qué host se aplica la configuración. Cuando se utiliza un servidor dedicado, el parámetro puede dejarse sin cambios;
- TODO=(TODO TODO)ALL - los parámetros entre paréntesis determinan la autoridad de qué usuario (primer parámetro) y/o grupo (segundo parámetro) se ejecutará el comando. De forma predeterminada, sudo ejecuta el comando como root, pero al iniciar con el modificador –u, puede especificar una cuenta diferente, y con el modificador –g puede especificar otro grupo cuyos privilegios se utilizarán al iniciar;
- TODOS=(TODOS: TODOS)TODO- el tercer parámetro determina a qué archivos y comandos pertenecen estas configuraciones.
Con base en lo anterior, si es necesario, determine la lista de comandos permitidos, reemplace el último parámetro TODO con lo que necesitamos, enumerando los comandos separados por comas. Por ejemplo, la línea:
user ALL=(ALL:ALL) /sbin/shutdown –r, /bin/cat
da al usuario el derecho de usar sudo para reiniciar el servidor con sudo /sbin/shutdown –r y ver archivos usando sudo /bin/cat. No se ejecutarán otros comandos a través de sudo. Por ejemplo, cuando intenta apagar el servidor con el comando sudo /sbin/shutdown –h, obtenemos la respuesta:
Sorry, user user is not allowed to execute '/sbin/shutdown -h' as root on debian10.
Conveniente
Puede ver la lista de privilegios ejecutando sudo –l (se mostrará la lista del usuario actual) o sudo –l –U user (se mostrará la lista de privilegios de usuario):

La composición de sudo incluye el comando sudoedit, que inicia un editor de texto con el archivo especificado inmediatamente con privilegios elevados, es decir, en lugar del comando:
sudo nano /etc/network/interfaces
poder correr:
sudoedit /etc/network/interfaces
Si necesita trabajar en modo de privilegio elevado durante mucho tiempo y no es conveniente ingresar sudo para cada comando, puede ejecutar una instancia del intérprete de comandos a través de sudo:
sudo bash
y continuar trabajando en él: todos los equipos se lanzarán con derechos elevados. Al finalizar, salga del intérprete con el comando de salida.


