Pregunta

¿Alguien ha podido hacer que xinc se ejecute correctamente en el Apache predeterminado con chroot de OpenBSD?Me gustaría mantener nuestro servidor de desarrollo funcionando completamente con chroot al igual que nuestro servidor de producción para asegurarnos de que nuestro código funcione correctamente con chroot.

¿Fue útil?

Solución

¿Ha publicado el problema en Xinc? localizador de bichos?El propio Xinc debería funcionar bien, ya que se ejecuta como demonio y como aplicación web.Como mencionó, el problema puede ser que el demonio no se esté ejecutando en un entorno chroot como lo está la interfaz web, lo que hace que ninguna de las partes pueda capturar los archivos.

Otros consejos

@dragonmantank

En el caso de Xinc, espero que hayas usado PEAR para instalarlo.

pear list-files xinc/Xinc

Esto debería ser suficiente y mostrarle dónde colocó sus archivos su instalación de Xinc.Entonces, aunque Xinc es "sólo" un gran script PHP, todavía se distribuye en scripts rc y todas esas otras cosas que son necesarias para ejecutar una aplicación.Estoy seguro de que no es necesario agregar todas las rutas enumeradas allí, pero probablemente algunas para que se ejecute.

Aparte del propio Xinc, creo que también necesita phpUnit y muchas otras bibliotecas PEAR para ejecutarse, así que lo que propondría es esto:

pear config-get php_dir

Y luego debe agregar esa ruta (como sugirió Henrik) al entorno chroot.

Como nunca he usado xinc, solo puedo insinuar cómo suelo hacer chrooting en aplicaciones.

El primer paso sería recopilar información sobre todo lo que la aplicación necesita para ejecutarse;Esto normalmente lo logro ejecutando ruta del sistema(1) y dd(1) para saber qué se necesita para ejecutar el software.

Pasar por la salida de

systrace -A -d. <app>
ldd <app>

y asegúrese de que todo lo que la aplicación toca y necesita (muchas aplicaciones tocan cosas que en realidad no necesitan) esté disponible en el entorno chroot.Es posible que necesites modificar un poco las configuraciones y las variables de entorno.Además, si hay una opción para que la aplicación se registre en syslog, normalmente lo hago y creo un socket syslog (consulte la opción -a de syslogd(8)) para disminuir los lugares a los que la aplicación necesita acceso de escritura.

Lo que acabo de describir es una forma genérica de hacer que casi cualquier programa se ejecute en un entorno chroot (sin embargo, si necesita importar la mitad del espacio de usuario y algunos comandos suid, es posible que desee simplemente no utilizar chroot :).Para aplicaciones que se ejecutan bajo Apache (estoy seguro de que sabes que OpenBSD httpd(8) es ligeramente diferente) tienes la opción (una vez iniciado el programa;cualquier biblioteca dinámica aún debe estar presente en la cárcel) de usar apache para acceder a los archivos, permitiendo el uso de httpd.conf importar recursos en el entorno chroot sin copiarlos realmente.

También es útil (aunque un poco desactualizado) este enlace, que describe algunos errores en PHP chroot en OpenBSD.

El primer paso sería recopilar información sobre todo lo que la aplicación necesita para ejecutarse;Esto normalmente lo logro ejecutando systrace(1) y ldd(1) para averiguar qué se necesita para ejecutar el software.

Lo intentaré.El gran problema que encontré con xinc es que, si bien es una aplicación PHP, quiere conocer las rutas de instalación de la aplicación (aún así distribuye cosas en otras carpetas) y ejecuta algunos scripts PHP en modo demonio (esos scripts son los más difíciles de ponerse a correr).Entonces, por ejemplo, le dije que lo instalara en /var/www/xinc y luego hice un enlace simbólico de

/var/www/var/www/xinc -> /var/www/xinc

y funcionó parcialmente.Conseguí que apareciera la GUI pero se negó a reconocer cualquier proyecto que hubiera configurado.Creo que el mayor problema es que parte se ejecuta en un chroot y la otra mitad se ejecuta en el exterior.

Si todo lo demás falla, tendré que construir algo mientras programamos dentro de entornos chroot, ya que nuestra producción está chroot.Nos hemos encontrado con problemas en los que codificamos fuera de un chroot y luego tenemos que retroceder para encontrar lo que necesitamos para que funcione dentro de un chroot.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top