Cómo copiar archivos como acción "posterior a la compilación" de Jenkins si no tengo privilegios para el directorio de destino

Cómo copiar archivos como acción "posterior a la compilación" de Jenkins si no tengo privilegios para el directorio de destino

Tengo los siguientes usuarios "arquitectura":

  1. el acceso raíz está deshabilitado.
  2. El usuario administrador tiene acceso solo a su directorio de inicio.
  3. Apache se ejecuta como servicio raíz (la raíz es la única que tiene acceso a los archivos del servidor web)
  4. He instalado jenkins CI que está construyendo mi proyecto con privilegios de "administrador".

Me gustaría copiar los archivos de compilación más recientes a la ubicación de mi servidor web como acción posterior a la compilación. ¿Cómo puedo lograrlo si sólo el usuario "root" tiene acceso a mi directorio de destino? ¿Tal vez mi "arquitectura de usuarios" está mal en primer lugar?

Respuesta1

¿Tal vez mi "arquitectura de usuarios" está mal en primer lugar?

Sí. Odio decírtelo, pero esto es todo. Así es como debes cambiarlo:

  1. Ejecute Apache como su propio usuario, preferiblemente en un chroot. Esto se llama principio de privilegio mínimo: la idea es limitar el daño que se puede causar en caso de que algo se vea comprometido. Supongamos que algovoluntadcomprometerse y trabajar desde allí. No hay ninguna razón por la que deba ejecutar Apache como usuario privilegiado.
  2. Ejecute Jenkins CI como su propio usuario. Se aplica el mismo principio.
  3. Proporcione alguna forma para que los archivos lleguen al directorio del servidor web. Por ejemplo, podrías agregar el usuario de Jenkins al grupo de Apache. Esto debería darle al servidor de compilación de Jenkins acceso al directorio del servidor web. Una forma aún más segura sería ejecutar una tarea cron o un temporizador systemd como usuario de Apache y usarlo para copiar los archivos. ¿Por qué es esto más seguro? Si Jenkins se ve comprometido, el atacante no tendrá acceso a los directorios de su servidor web.

información relacionada