Uso de sudo para asegurar la implementación de git a través de un script web

5

Estoy configurando un servidor para realizar una implementación automática desde un repositorio de Bitbucket git, usando la función de devolución de datos de Bitbucket.

En pocas palabras, cómo funciona:

  1. Me comprometo a Bitbucket
  2. Bitbucket POSTs a un script específico (que solo se ejecuta si se llama desde la dirección IP de BB)
  3. Mis scripts están en el directorio apropiado, ejecuta git reset y git pull para actualizar a la última versión (es un script php que usa exec ()).

Tengo la idea de:

enlace

Y, en general, parece estar bien, pero tiene un problema de seguridad importante para mí: para que funcione, debe otorgarle a apache acceso de escritura a / owner del directorio del sitio para realizar la implementación. Esto me parece una mala idea, porque entonces un atacante usa apache para escribir archivos arbitrarios dentro del directorio.

Mi idea como alternativa es:

  1. Cree otro usuario, 'despliegue' y luego haga que el usuario que posee el directorio del sitio.
  2. Use sudoers para permitir que Apache ejecute un script de shell específico como despliegue de usuario, y ponga mi git reset, pull command, etc. en ese script de shell.
  3. En mis llamadas a exec (), por ejemplo, "sudo -u deploy shell-script.sh"

¿Alguien puede ver fallas / agujeros con esto?

    
pregunta Iain 15.12.2012 - 00:19
fuente

1 respuesta

1

Llamar a sudo desde apache simplemente no suena bien, a pesar de que no puedo señalar exactamente el conjunto de razones por las que sería una mala idea.

En lugar de hacer sudo, sugeriría que solo ejecute un CGI muy simple como "despliegue de grupo de suexecuserges" que recibiría la devolución de datos de bitbucket y ejecutaría los comandos git. Esto es mucho más sencillo y sano.

    
respondido por el mricon 16.12.2012 - 04:11
fuente

Lea otras preguntas en las etiquetas