GNU/Linux >> Tutoriales Linux >  >> Linux

Manera de hacer que un script de Shell siempre se ejecute como raíz?

Quiero saber cómo crear (si es posible) un script bash que se ejecute como root en Debian independientemente del usuario que lo ejecute, sin pedir ningún tipo de autenticación.

Este archivo ejecutará todos sus comandos como si fuera el usuario raíz, pero solo el usuario raíz real podrá leerlo o escribir en él.

Necesito esto porque quiero ejecutar comandos como swapoff , swapon , apt , etc… Pero a través de otra aplicación, y quiero que no me pida ninguna contraseña.

Los comandos serán corregidos (esos comandos raíz tendrán sus parámetros en el archivo, no como entrada), por lo que las implicaciones de seguridad no son exactamente mi preocupación, pero también acepto explicaciones.

Respuesta aceptada:

La forma de bajo nivel de hacer que un programa siempre se ejecute bajo un UID particular es el bit setuid en el archivo binario. Así es como, p. sudo y su obtener sus permisos de raíz, incluso si normalmente se inician con usos normales.
Pero, en general, los sistemas similares a Unix no son compatibles con los scripts de setuid. , consulte:Permitir setuid en scripts de shell

Sin embargo, lo que puedes hacer es configurar sudo o alguna otra herramienta similar que permita a los usuarios ejecutar algunos archivos en particular con los privilegios apropiados. Por ejemplo, esto permitiría a viceadmin para ejecutar /usr/local/bin/sudoswapon con cualquier argumento y sin autenticación:

viceadmin ALL = NOPASSWD:/usr/local/bin/sudoswapon

Ahora, desde sudo se ocupa de cambiar los privilegios en sí, sudoswapon puede ser un script de shell.

Tiene razón al notar que la secuencia de comandos debe tener cuidado con la forma en que trata los argumentos de la línea de comandos, y que todos se aplicarán los errores del lenguaje shell. Afortunadamente, sudo filtra la mayoría de las variables de entorno, al menos si env_reset la opción está configurada.


Linux
  1. ¿Por qué "sudo Su" en un script de Shell no ejecuta el resto del script como root?

  2. ¿Desde dónde se ejecuta un script de Shell?

  3. Cómo ejecutar scripts de Python desde shell

  4. Kali Linux VM:Permiso denegado para ejecutar script de shell, como raíz

  5. Ejecute un script de shell como un usuario diferente

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

¿Ejecutar el comando de shell en jenkins como usuario root?

¿Puedo hacer que un script siempre se ejecute como root?

¿Cuál es la forma más rápida de ejecutar un script?