Tengo un script de shell que sincroniza algunos archivos desde una fuente remota y tengo una configuración de servidor HTTP bastante típica. Hay un usuario que posee los archivos servidos por el servidor HTTP y un usuario que ejecuta el servidor HTTP, ambos pertenecen al mismo grupo.
Quiero que los archivos sincronizados sean propiedad del usuario "propietario" y no quiero que el usuario del servidor HTTP pueda escribirles. Sin embargo, quiero que el usuario del servidor HTTP pueda invocar el script de sincronización.
Una opción es envolver el script de shell en una pequeña aplicación de C y usar setuid para que el usuario del servidor HTTP pueda ejecutarlo como el usuario "propietario".
Dado que:
- No habrá ninguna entrada en el script: la ubicación remota, la ubicación de destino, etc., son constantes.
- La secuencia de comandos setuid no será propiedad / ejecutada por la raíz.
¿Es esto algo seguro y sensato?
Editar:
Para explicar las cosas, puede usar los siguientes nombres:
- despliegue-usuario: el usuario que debe poseer los archivos
- www-user: el usuario que ejecuta el servidor HTTP
- www-group: el grupo deploy-user y www-user pertenecen a
- sync.sh: el script que actualiza el archivo
- sync.txt: el archivo de destino