¿Es posible hacer que el usuario del servidor web, lighttpd
en mi caso, active un script específico que deba ejecutarse con sudo
permisos?
Solo quiero que el lighttpd
usuario pueda activar ese script con sudo
permisos.
El script, llamémoslo createFolder.sh
, crea una carpeta a partir de una plantilla en el nivel superior de un recurso compartido. Los usuarios no tienen permisos de escritura en el nivel superior del recurso compartido, pero deberían tener permiso de escritura en la estructura de carpetas recién creada. Por lo tanto, el script configura los permisos correctos en las subcarpetas y de ahí sudo
surge la necesidad de usar ( y chown
) .chmod
setfacl
La razón por la que me gustaría utilizar una interfaz web es para que los usuarios puedan insertar los datos para el nombre de la carpeta y la configuración que definirá la estructura exacta de la carpeta.
Pensé que sería tan simple como agregar una entrada /etc/sudoers
para permitir al lighttpd
usuario ejecutar createFolder.sh
sin contraseña. Parece que me equivoqué porque aparece el siguiente error:
sudo: no se puede mkdir /var/db/sudo/lighttpd: permiso denegado
Confiamos en que haya recibido el sermón habitual del administrador del sistema local. Generalmente se reduce a estas tres cosas:
1) Respetar la privacidad de los demás.
2) Piensa antes de escribir.
3) Un gran poder conlleva una gran responsabilidad.sudo: no hay tty presente y no se ha especificado ningún programa Askpass
Si fuera posible configurar el script para que se ejecute siempre como un usuario con los permisos correctos, lo solucionaría, pero no pude encontrar cómo hacerlo o si es posible.
Como nota al margen, aprendí Linux por mi cuenta y, aunque confío en mis habilidades, no soy un especialista y siempre estoy buscando mejorar.
Estoy ejecutando una caja CentOS 7.
EDITAR: Resolví el problema usando inotify para activar mi createFolder.sh
script cuando se modifica un archivo de texto. Ver respuesta correcta y sus comentarios. Gracias por señalarme en la dirección correcta chicos.
Respuesta1
Debería hacer que el script raíz "extraiga" del normal en lugar de que el último "empuje" al primero. Como ejemplo ilustrativo:
- Cree un trabajo cron que busque una lista de carpetas que se crearán en un archivo de texto
- Haga que el script de usuario lighttpd agregue la carpeta deseada a ese archivo de texto
Puedes hacer esto de manera más elegante con un sistema de colas/mensajes, pero eso depende de ti.