¿Cuál es una buena manera de permitir a los usuarios restringidos la posibilidad de ejecutar un script que requiere privilegios de administrador?

¿Cuál es una buena manera de permitir a los usuarios restringidos la posibilidad de ejecutar un script que requiere privilegios de administrador?

Tengo un script que quiero que algunos de mis usuarios puedan ejecutar y que requiere administrador. Por supuesto que no quiero darles privilegios de administrador. ¿Cómo permito que este script se ejecute de forma segura?

Actualización: este es un sistema Ubuntu 9.10.

Respuesta1

Solo usa sudo. Necesitas configurar sudo en /etc/sudoersalgo como esto:

fred ALL = (root) NOPASSWD: /path/to/command

Reemplace fred con el nombre de usuario o use %group para un grupo. Si elimina la opción NOPASSWD:, se les solicitará su contraseña cada vez.

setuid en un script es inseguro y no funcionará en Linux.

Respuesta2

sudo y SUID son ambosmuy inseguro. Es posible (y, dependiendo del lenguaje de programación, fácil) escapar de cualquiera de ellos. SUID es, con diferencia, el peor y algunos lenguajes de programación ni siquiera se ejecutarán si se hace eso.

Tengo una publicación de blog sobre cómo hacerlo de forma segura, que escribí por primera vez paraejecutando complementos de verificación de Nagios como rootpero es perfectamente aplicable aquí. Hay un pequeño programa en C (que ha estado flotando en el mundo de la administración de Linux durante años) que simplemente actúa como un contenedor alrededor del script. Simplemente edite el código fuente del programa C para incluir la ruta completa al script, compílelo y luego configure ese SUID (o déle acceso a Sudo). La fuente está en mi sitio:setuid-prog.c.

El problema inherente a la ejecución de scripts como root (para usuarios no root) es que en muchos idiomas, utilizando una variedad de técnicas (desde una mala comprobación de entrada hasta desbordamientos), es posible salir del script en ejecución y obtener acceso completo a root. . Muchos usuarios de Unix de antaño recomiendan simplemente escribir un programa en C para hacer lo que necesitas, pero claro, la mayoría de ellos eran SA cuandonecesariopoder escribir C de manera competente.

Respuesta3

¿En qué sistema operativo?

En Linux/Unix puedes permitirles ejecutarlo mediante sudo. El archivo /etc/sudoers se puede modificar para otorgarles permisos específicos en comandos designados, para ciertos ID (usuarios).

Alternativamente, puede configurar el bit SUID y cambiar el script para que sea propiedad de un usuario privilegiado. Eso configuraría el script para que se ejecute como ese usuario, en lugar de que el usuario lo ejecute. Sin embargo, eso es para todos los usuarios que lo ejecutan.

Respuesta4

Hay dos maneras:

Lo mejor es configurar el bit SUID: chown root yourscript; chmod a+s yourscript.

Alternativamente, puede darles acceso para modificarlo usando sudo, ejecutando visudoy siguiendo las instrucciones. Sin embargo, esto es innecesario, ya que funciona ejecutando sudo, que tiene el bit SUID.

información relacionada