Wie mounte ich FUSE (z. B. unionfs), damit alle Benutzer darauf zugreifen können?

Wie mounte ich FUSE (z. B. unionfs), damit alle Benutzer darauf zugreifen können?

Ich versuche, mit unionfs mehrere (100+) Instanzen einiger Entwicklungstools für unseren Entwicklungsserver zu erstellen. Hier ist das Skript, das ich verwende:

PROJECT=$1
DEPLOYMENT=$2
TOOL=$3

DIR_TOOL="/var/www/tools/${TOOL}"
DIR_CONFIG="/var/www/tools-instances/${PROJECT}/${DEPLOYMENT}/${TOOL}/config"
DIR_TMP="/var/www/tools-instances/${PROJECT}/${DEPLOYMENT}/${TOOL}/tmp"
DIR_MERGED="/var/www/tools-instances/${PROJECT}/${DEPLOYMENT}/${TOOL}/merged"

mkdir -p "${DIR_CONFIG}"
mkdir -p "${DIR_TMP}"
mkdir -p "${DIR_MERGED}"

unionfs -o cow "${DIR_TMP}"=RW:"${DIR_CONFIG}"=RO:"${DIR_TOOL}"=RO "${DIR_MERGED}"

Und dann verwenden Sie es folgendermaßen:

create-tool-overlay.sh "project-1" "staging" "phpmyadmin"

Alles funktioniert einwandfrei, aber nur für unseren managerBenutzer. Wenn ich versuche, als beliebiger anderer Benutzer auf den Ordner zuzugreifen, einschließlich www-data(der diesen Zugriff benötigt) und root(der auf alles zugreifen sollte), erhalte ich permission denied. Und wenn ich versuche, diesen Ordner auszuführen, lserhalte ich diese seltsame Ausgabe:

root@app-1:/var/www/tools-instances/project-1/staging/phpmyadmin# ls -al
ls: cannot access 'merged': Permission denied
total 32
drwxrwxr-x+ 5 manager manager 4096 Dec 16 15:51 .
drwxrwxr-x+ 3 manager manager 4096 Dec 14 15:29 ..
drwxrwxr-x+ 2 manager manager 4096 Dec 14 15:29 config
d?????????? ? ?       ?          ?            ? merged
drwxrwxr-x+ 2 manager manager 4096 Dec 16 15:51 tmp

Antwort1

Die unionfsvon Ihnen verwendete ausführbare Datei erstellte eineDateisystem inBenutzerbereich(SICHERUNG). Der Prozess, der das Dateisystem verwaltet, läuft unter einem bestimmten Benutzer (in Ihrem Fall: manager) und andere Benutzer haben keinen Zugriff. Anderen Benutzern Zugriff zu gewähren ist weniger sicher. Lesen Sie mehr überSicherheitsbedenken.

Sie können die Sicherheit verringern. Siehe man 8 fuse. Die Option allow_rooterlaubt Root, das Dateisystem zu verwenden. Die Option allow_othererlaubt jedem, das Dateisystem zu verwenden. Diese Optionen schließen sich gegenseitig aus, es scheint, dass Sie die letztere wollen. Beachten Sie, dass Sie sie einfügen müssen, user_allow_otherum /etc/fuse.confsie allow_otherals normaler Benutzer zu verwenden. Dies ist der relevante Kommentar aus der Standardeinstellung fuse.confin meinem Kubuntu [ formattingmeins]:

user_allow_other- Die Verwendung der allow_otherMount-Option funktioniert als Root einwandfrei, damit sie auch als Benutzer funktioniert user_allow_other, den Sie benötigen. (Diese Option ermöglicht es Benutzern, die Option zu verwenden.) Sie benötigen sie , wenn Sie möchten, dass andere Benutzer als der Eigentümer auf eine gemountete Sicherung zugreifen können. Diese Option muss in einer eigenen Zeile stehen. Es gibt keinen Wert, nur das Vorhandensein der Option./etc/fuse.confallow_otherallow_other

Sie übergeben allow_otherals (Teil) eines Optionsarguments an -obeim Aufrufen unionfs. In Ihrem Fall sieht das so aus:

unionfs -o cow,allow_other …

Beachten Sie, dass das Dateisystem, wenn es unter einem bestimmten regulären Benutzer ausgeführt wird, nur das tun kann (mit dem zugrunde liegenden Speicher), was dieser Benutzer tun kann. Wenn Sie beispielsweise unionfsals ausführen managerund die Verwendung des Dateisystems allow_otherzulassen , gehören www-dataalle von erstellten Dateien trotzdem dazu . Möglicherweise treten weitere Einschränkungen auf.www-datamanager

Das Ausführen des Dateisystems unter rootkann helfen, aber siehe diebereits verlinkte Antwort. Unterschreiten der Grenzwerte rootist nicht zu empfehlen.

Im Allgemeinen ist FUSE als generische Möglichkeit für Benutzer ohne Root-Zugriff konzipiert, Dateisysteme zu mounten und zu verwenden fürsich, ohne die tatsächlichen Administratoren zu belästigen. Um ein Dateisystem mit anderen Benutzern zu verwenden, ist es am besten, Unterstützung vom Kernel und von einem Administrator zu erhalten, der dies kann mount.

Soweit ich weiß, ist es möglich, UnionFS als Kernelmodul zu haben (nicht FUSE), aber es ist nicht im Hauptkernel enthalten, Sie müssen es selbst erstellen. Wenn ich das richtig verstehe, sollte sich im Kernel implementiertes UnionFS wie erwartet verhalten.

In meinem Kubuntu kann ich OverlayFS verwenden (eines derAlternativen) bereits als Kernelmodul vorhanden (nicht FUSE).

verwandte Informationen