%2C%20damit%20alle%20Benutzer%20darauf%20zugreifen%20k%C3%B6nnen%3F.png)
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 manager
Benutzer. 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, ls
erhalte 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 unionfs
von 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_root
erlaubt Root, das Dateisystem zu verwenden. Die Option allow_other
erlaubt 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_other
um /etc/fuse.conf
sie allow_other
als normaler Benutzer zu verwenden. Dies ist der relevante Kommentar aus der Standardeinstellung fuse.conf
in meinem Kubuntu [ formatting
meins]:
user_allow_other
- Die Verwendung derallow_other
Mount-Option funktioniert als Root einwandfrei, damit sie auch als Benutzer funktioniertuser_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.conf
allow_other
allow_other
Sie übergeben allow_other
als (Teil) eines Optionsarguments an -o
beim 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 unionfs
als ausführen manager
und die Verwendung des Dateisystems allow_other
zulassen , gehören www-data
alle von erstellten Dateien trotzdem dazu . Möglicherweise treten weitere Einschränkungen auf.www-data
manager
Das Ausführen des Dateisystems unter root
kann helfen, aber siehe diebereits verlinkte Antwort. Unterschreiten der Grenzwerte root
ist 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).