07.06.2023

Debian derechos de superusuario (sudo, visudo)

Información general

Linux Los sistemas operativos implementan el principio de diferenciar los privilegios de los usuarios, lo que significa que diferentes cuentas tienen diferentes cantidades de derechos de acceso a directorios, archivos y programas.rams. Los derechos máximos se otorgan a la cuenta raíz integrada. Las cuentas de usuario recién creadas suelen estar significativamente restringidas en el acceso a los archivos de configuración del sistema, la gestión de servicios y la instalación y eliminación de 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, el 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:

raíz@debian10:~#sudo
-bash: sudo: comando no encontrado

Por lo tanto, debe instalar el paquete que falta. Actualice la información del repositorio e instale sudo:

apt-get update
apt-get instalar sudo

Estamos esperando el final del proceso:

Captura de pantalla n.º 1. Debian derechos de superusuario

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:

Captura de pantalla №2. Editor de texto con un archivo de configuración

Dos líneas se encargan de otorgar derechos:

root TODO=(TODO:TODO) TODO
%sudo TODO=(TODO:TODO) TODO

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:

usuariomod –a –G sudo usuario

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:

usuario TODO=(TODO:TODO) TODO

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:

usuario@debian10:~$ sudo gato /etc/sudoers
[sudo] contraseña para el usuario:

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

Por lo tanto, un usuario común puede ejecutar comandos con los derechos de la cuenta raíz sin conocer su contraseña. Esto es muy conveniente, pero puede ser inseguro. ¿Es posible limitar el rango de comandos que se pueden ejecutar usando sudo? Sí, y el mismo archivo de configuración nos ayudará con esto. Comenzamos visudo nuevamente y entendemos más. Nos interesa el parametros especificados después del nombre de usuario:

Captura de pantalla №3. Pensilvaniarametros especificados después del nombre de usuario

Los analizaremos con más detalle:

  • TODAS= (TODOS: TODOS) TODOS - el primer parameter determina a qué host se aplica la configuración. Al usar un servidor dedicado, el parameter se puede dejar sin cambios;
  • TODO=(TODO TODO)TODOS - el paramLos éteres entre paréntesis determinan la autoridad de qué usuario (primera pag.rameter) y/o grupo (segundo parameter) se ejecutará el comando. De forma predeterminada, sudo ejecuta el comando como root, pero al comenzar con el modificador –u, puede especificar una cuenta diferente, y con el modificador –g puede especificar otro grupo cuyos privilegios se utilizarán al inicio;
  • TODOS=(TODOS: TODOS)TODAS- el tercer padrerameter 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 paraméter TODAS con lo que necesitamos, enumerando los comandos separados por comas. Por ejemplo, la línea:

usuario TODOS=(TODOS:TODOS) /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:

Lo sentimos, el usuario no puede ejecutar '/sbin/shutdown -h' como root en 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):

Captura de pantalla №4. 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/red/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:

bash sudo

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.