Question

Quelqu'un a-t-il réussi à faire fonctionner xinc correctement sous Apache chrooté par défaut d'OpenBSD ?J'aimerais que notre serveur de développement continue de fonctionner entièrement chrooté, tout comme notre serveur de production, afin que nous puissions nous assurer que notre code fonctionne parfaitement chrooté.

Était-ce utile?

La solution

Avez-vous posté le problème sur le Xinc traqueur de bogues?Xinc lui-même devrait fonctionner correctement car il fonctionne à la fois en tant que démon et en tant qu'application Web.Comme vous l'avez mentionné, le problème peut être que le démon ne s'exécute pas dans un environnement chrooté, contrairement à l'interface Web, ce qui empêche l'un ou l'autre côté de récupérer les fichiers.

Autres conseils

@dragonmantank

Dans le cas de Xinc, j'espère que vous avez utilisé PEAR pour l'installer.

pear list-files xinc/Xinc

Cela devrait le faire et vous montrer où votre installation Xinc a placé ses fichiers.Ainsi, même si Xinc n'est "qu'un" gros script PHP, il est toujours réparti en scripts rc et toutes ces autres choses nécessaires au fonctionnement d'une application.Je suis sûr que vous n'avez pas besoin d'ajouter tous les chemins répertoriés ici, mais probablement certains pour le faire fonctionner.

Mis à part Xinc lui-même, je pense qu'il a également besoin de phpUnit et d'un tas d'autres bibliothèques PEAR pour fonctionner, donc ce que je proposerais est ceci :

pear config-get php_dir

Et puis vous devez ajouter ce chemin (comme l'a suggéré Henrik) à l'environnement chroot.

N'ayant jamais utilisé xinc moi-même, je ne peux que donner une idée de la façon dont j'arrive habituellement à chrooter des applications.

La première étape consisterait à collecter des informations sur tout ce dont l'application a besoin pour fonctionner ;c'est ce que j'accomplis habituellement en courant trace système(1) et ldd(1) pour savoir ce qui est nécessaire pour exécuter le logiciel.

Parcourez la sortie de

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

et assurez-vous que tout ce que l'application touche et dont elle a besoin (de nombreuses applications touchent à des éléments dont elle n'a pas réellement besoin) est disponible dans l'environnement chroot.Vous devrez peut-être modifier un peu les configurations et les variables d'environnement.De plus, s'il existe une option pour que le journal de l'application soit connecté à Syslog, je le fais généralement et je crée un socket Syslog (voir l'option -a de syslogd(8)) afin de réduire les endroits auxquels l'application a besoin d'un accès en écriture.

Ce que je viens de décrire est un moyen générique d'exécuter à peu près n'importe quel programme dans un environnement chroot (cependant, si vous devez importer la moitié de l'espace utilisateur et certaines commandes suid, vous souhaiterez peut-être simplement ne pas faire de chroot :).Pour les applications fonctionnant sous Apache (je suis sûr que vous savez que OpenBSD httpd(8) est légèrement différent), vous avez la possibilité (une fois le programme démarré ;toutes les bibliothèques dynamiques doivent toujours être présentes dans la prison) d'utiliser Apache pour accéder aux fichiers, permettant l'utilisation de httpd.conf pour importer des ressources dans l'environnement chroot sans les copier.

Également utile (bien que légèrement obsolète) est ce lien, décrivant quelques pièges dans PHP chrooté sur OpenBSD.

La première étape consisterait à collecter des informations sur tout ce dont l'application a besoin pour fonctionner ;j'y parviens habituellement en exécutant systrace(1) et ldd(1) pour découvrir ce qui est nécessaire pour exécuter le logiciel.

Je vais essayer ça.Le gros problème que j'ai trouvé avec xinc est que même s'il s'agit d'une application PHP, elle souhaite connaître les chemins d'installation des applications (mais elle diffuse toujours des éléments dans d'autres dossiers) et exécute certains scripts PHP en mode démon (ces scripts étant les plus difficiles à exécuter). courez).Ainsi, par exemple, je lui ai dit d'installer sur /var/www/xinc, puis j'ai créé un lien symbolique de

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

et cela a partiellement fonctionné.J'ai fait apparaître l'interface graphique, mais elle a refusé de reconnaître les projets que j'avais mis en place.Je pense que le plus gros problème est qu'une partie consiste à exécuter un chroot et l'autre moitié à s'exécuter à l'extérieur.

Si tout le reste échoue, je devrai simplement construire quelque chose pendant que nous programmons dans des environnements chrootés puisque notre production est chrootée.Nous avons rencontré des problèmes où nous codons en dehors d'un chroot et devons ensuite revenir en arrière pour trouver ce dont nous avons besoin pour que cela fonctionne à l'intérieur d'un chroot.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top