Frage

Konnte jemand xinc unter dem chrootierten Standard-Apache von OpenBSD korrekt zum Laufen bringen?Ich möchte, dass unser Entwicklungsserver genau wie unser Produktionsserver vollständig im Chroot-Modus läuft, damit wir sicherstellen, dass unser Code einwandfrei im Chroot-Modus läuft.

War es hilfreich?

Lösung

Haben Sie das Problem auf Xinc gepostet? Bug-Tracker?Xinc selbst sollte einwandfrei laufen, da es sowohl als Daemon als auch als Web-App läuft.Wie Sie angedeutet haben, liegt das Problem möglicherweise darin, dass der Daemon nicht in einer chroot-Umgebung ausgeführt wird, wie dies bei der Weboberfläche der Fall ist, was dazu führt, dass keine Seite die Dateien abruft.

Andere Tipps

@dragonmantank

Im Fall von Xinc hoffe ich, dass Sie PEAR zur Installation verwendet haben.

pear list-files xinc/Xinc

Dies sollte dies tun und Ihnen zeigen, wo Ihre Xinc-Installation ihre Dateien abgelegt hat.Auch wenn Xinc „nur“ ein großes PHP-Skript ist, ist es dennoch in RC-Skripte und all die anderen Dinge verstreut, die für die Ausführung einer Anwendung erforderlich sind.Ich bin mir sicher, dass Sie nicht alle dort aufgeführten Pfade hinzufügen müssen, aber wahrscheinlich einige, damit es läuft.

Abgesehen von Xinc selbst denke ich, dass es zum Ausführen auch phpUnit und eine Reihe anderer PEAR-Bibliotheken benötigt. Ich würde also Folgendes vorschlagen:

pear config-get php_dir

Und dann müssen Sie diesen Pfad (wie Henrik vorgeschlagen hat) zur Chroot-Umgebung hinzufügen.

Da ich xinc selbst noch nie verwendet habe, kann ich nur einen Hinweis darauf geben, wie ich normalerweise dazu komme, Apps zu chrooten.

Der erste Schritt wäre, Informationen über alles zu sammeln, was die App zum Ausführen benötigt;Dies erreiche ich normalerweise durch Laufen systrace(1) Und ldd(1) um herauszufinden, was zum Ausführen der Software erforderlich ist.

Gehen Sie die Ausgabe von durch

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

und stellen Sie sicher, dass alles, was die App berührt und benötigt (ziemlich viele Apps berühren Dinge, die sie eigentlich nicht braucht), in der Chroot-Umgebung verfügbar ist.Möglicherweise müssen Sie die Konfigurationen und Umgebungsvariablen etwas anpassen.Wenn es außerdem eine Option gibt, die App in Syslog protokollieren zu lassen, mache ich das normalerweise und erstelle einen Syslog-Socket (siehe die Option -a von syslogd(8)), um die Orte zu verringern, auf die die App Schreibzugriff benötigt.

Was ich gerade beschrieben habe, ist eine generische Möglichkeit, nahezu jedes Programm in einer Chroot-Umgebung laufen zu lassen (wenn Sie jedoch die Hälfte des Userlandes und einige Suid-Befehle importieren müssen, möchten Sie vielleicht einfach auf Chroot verzichten :).Für Apps, die unter Apache laufen (Sie wissen sicher, dass OpenBSD httpd(8) ist etwas anders) haben Sie die Möglichkeit (sobald das Programm gestartet ist;Alle dynamischen Bibliotheken müssen noch im Jail vorhanden sein), um Apache für den Zugriff auf die Dateien zu verwenden, was die Verwendung von ermöglicht httpd.conf um Ressourcen in die Chroot-Umgebung zu importieren, ohne sie tatsächlich zu kopieren.

Auch nützlich (wenn auch etwas veraltet) ist Das Link, der einige Fallstricke in chrooted PHP unter OpenBSD beschreibt.

Der erste Schritt wäre, Informationen über alles zu sammeln, was die App zum Ausführen benötigt;Dies erreiche ich normalerweise, indem ich systrace(1) und ldd(1) ausführe, um herauszufinden, was zum Ausführen der Software erforderlich ist.

Ich werde es versuchen.Das große Problem, das ich bei xinc festgestellt habe, besteht darin, dass es sich zwar um eine PHP-Anwendung handelt, diese jedoch die Installationspfade der Anwendungen kennen möchte (aber dennoch Inhalte in andere Ordner verteilt) und einige PHP-Skripte im Daemon-Modus ausführt (diese Skripte sind am schwierigsten). loslaufen).So habe ich zum Beispiel gesagt, dass es nach /var/www/xinc installiert werden soll, und habe dann einen Symlink daraus erstellt

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

und es hat teilweise funktioniert.Ich habe die GUI zwar aufgerufen, aber sie weigerte sich, alle von mir eingerichteten Projekte zu erkennen.Ich denke, das größte Problem besteht darin, dass ein Teil davon eine Chroot betreibt und die andere Hälfte draußen läuft.

Wenn alles andere fehlschlägt, muss ich einfach etwas erstellen, während wir in chroot-Umgebungen programmieren, da unsere Produktion chrootet ist.Wir sind auf Probleme gestoßen, bei denen wir außerhalb einer Chroot programmieren und dann zurückverfolgen müssen, um herauszufinden, was wir brauchen, damit es innerhalb einer Chroot funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top