Ich versuche, eine Hierarchie von Home-Verzeichnissen mehreren FreeBSD-Jails zugänglich zu machen. Die Basisverzeichnisse sind so konfiguriert, dass jedes ein eindeutiges ZFS-Dataset ist. Die Gefängnisse dienen der Entwicklungsarbeit und werden daher regelmäßig erstellt und vernichtet.
Mein erster Gedanke war, einfach nullfs zum Einhängen /home
in das Gefängnis zu verwenden, aber nullfs bietet keine Möglichkeit, auf untergeordnete Dateisysteme zuzugreifen.
Mein zweiter Gedanke war, die Verzeichnisse über NFS zu exportieren und dann den Automounter-Daemon (amd) in jedem Gefängnis auszuführen. Das hätte einfach funktioniert ... wenn es möglich wäre, NFS-Bereitstellungen in einem Gefängnis durchzuführen. Aber es ist nicht.
Mein dritter Gedanke war, amd auf dem Host auszuführen und nullfs in den Jails bereitzustellen ... aber es gibt keine amd-Unterstützung für nullfs .
Mein vierter Gedanke war, die Verzeichnisse wieder mit NFS zu exportieren, da amd natürlich mit NFS funktioniert, oder? Anstatt ein Verzeichnis auf dem Ziel-Mountpoint zu mounten, mountet amd die Dinge leider lieber an einem temporären Ort ( /.amd_mnt/...
) und erstellt dann einen Symlink ... was natürlich in der Jail-Umgebung nutzlos ist.
Vielleicht könnten Sie nullfs verwenden , um ein Unterverzeichnis von /.amd_mnt
für das Gefängnis freizugeben ? Nein! Dies bringt uns zu meinem ersten Versuch zurück, bei dem wir feststellen, dass es keine Möglichkeit gibt, mit nullfs auf untergeordnete Dateisysteme zuzugreifen .
Und dann explodierte mein Kopf.
Gibt es eine gute Lösung für das, was ich versuche? Eine schlechte Lösung wäre, nach dem Booten des Jails ein Skript auszuführen, das mehrere nullfs-Mountpunkte für jedes Ausgangsverzeichnis erstellt. Dies ist jedoch recht umständlich. Es müsste regelmäßig ausgeführt werden, um neue Verzeichnisse oder entfernte Verzeichnisse zu berücksichtigen. Im Grunde müsste ich also einen schlechten Automounter schreiben.
Es muss einen besseren Weg geben. Hilf mir, Serverfault, du bist meine einzige Hoffnung!
UPDATE 1 : Mir ist der Gedanke gekommen , dass ich möglicherweise einen Teil des Problems damit lösen kann pam_mount
, obwohl dies bestenfalls unvollständig wäre. Aus der Dokumentation geht auch nicht hervor, ob pam_mount
der Ziel-Mountpoint automatisch erstellt werden kann oder nicht . Wenn der Mountpoint von vornherein vorhanden sein muss, ist diese Lösung nicht besser als der schlechte Automounter, den ich bereits vorgeschlagen habe.
UPDATE 2 : Wie in den folgenden Antworten erläutert, VFCF_JAIL
können Jails NFS-Mounts durchführen, wenn sie das NFS-Dateisystem aktivieren. Unglücklicherweise verhält sich der Automounter weiterhin so, dass er nicht hilfreich ist. Wenn er in einem Gefängnis ausgeführt wird, scheint er sehr gut darin zu sein, sich so zu verkeilen, dass ein Neustart des Systems erforderlich ist, um den Prozesseintrag zu entfernen.
Antworten:
Hallo Lars! Das ist eine faszinierende Frage, die Sie gestellt haben, und nach einigen Recherchen habe ich möglicherweise eine Antwort für Sie gefunden.
Entsprechend diesem und anderen Posts kann es möglich sein, das
VFCF_JAIL
Attribut für den NFS-Dateisystemanbieter festzulegen, der es Jails theoretisch ermöglichen würde, NFS-Bereitstellungen durchzuführen. Dies kann wiederum dazu führen, dass man im Gefängnis herumläuft ... was dieses Problem ordentlich lösen würde.Ich werde heute Abend versuchen, den Kernel neu zu erstellen, um zu sehen, wie es läuft. Dies ist nicht unbedingt die beste Lösung (da Sie sicherstellen müssen, dass diese Änderung auch bei zukünftigen Kernel-Updates beibehalten wird), aber es wäre interessant, wenn sie funktioniert.
Und merke dir...
quelle
VFCF_JAIL
gemachten NFS-Mounts funktioniert, aber der Automounter stört mich weiterhin.