Mounting directories/shares in the EGroupware file manager
Dieser Artikel ist nicht perfekt und auch nicht fertig. Bei Fragen oder Problemen bitte im Forum ein Thema auf machen. Hinweise, Kommentare oder Beispiele gerne hier im Forum.
In das virtuelle Dateisystem (VFS) von EGroupware/Dateimanager können “externe” Verzeichnisse gemounted und verwendet werden.
Anwendungsbeispiele:
- Home-Verzeichnis von Fileserver/Domaincontroller => Home-Verzeichnis EGroupware-Benutzer
- Abteilungsverzeichnis Fileserver => EGroupware-Gruppen-Verzeichnis
- Verzeichnisse vom Familien-NAS
- “lokale” Verzeichnisse des EGroupware-Host => EGroupware-Dateisystem
- …
Gemounted werden können
- SMB-Freigaben (von Fileservern (Windows/Samba), NAS, …)
- FTP-Freigaben
- WebDAV-Freigaben (von anderen Filesharing-Systemen, weiteren EGroupware-Instanzen, …) (ab 21.1)
- lokale Verzeichnisse des Host-Systems (auch dort wiederum gemountete)
Die folgende Dokumentation beschreibt das Mounten einer SMB-Freigabe. Weitere Beispiele mit anderen Protokollen sollen folgen.
Seit dem Maintenance Release 21.1.20210923 ist es möglich, SMB- und WebDAV-Mounts direkt in EGroupware anzulegen:
Grundsätzliches
Die Mount-Points werden per Kommandozeile in die Datenbank geschrieben. Dies muss bei Standard-Docker-Installationen innerhalb des EGroupware-Containers statt finden.
Um eine Freigabe in Verzeichnis zu mounten:
docker exec -it egroupware /usr/share/egroupware/filemanager/cli.php mount --user root_admin --password 'PWAdminuser' smb://Benutzer:Passwort@SMB-Server/Freigabe /home/Gruppe/Verzeichnis
Oder erst den Container betreten:
docker exec -it egroupware bash
und dann das Verzeichnis mounten:
/usr/share/egroupware/filemanager/cli.php mount --user root_admin --password 'PWAdminuser' smb://Benutzer:Passwort@SMB-Server/Freigabe /home/Gruppe/Verzeichnis
Im Detail:
docker exec -it egroupware (bash)
Im Docker-Container egroupware
den folgenden Befehl ausführen (bzw. auf die Kommandozeile kommen).
/usr/share/egroupware/filemanager/cli.php mount
Aufruf von der Dateimanager cli.php mit Paratemeter mount (zum unmounten: umount
)
--user root_admin
Angabe EGroupware Setup Benutzer. Zwingend root_
vorangestellt. Benutzer heißt in der Regel admin.
--password 'PWAdminuser'
Passwort des EGroupware Setup-Benutzers.
smb://Benutzer:Passwort@SMB-Server/Freigabe
Angabe der Share mit Benutzer und Passwort
/home/Gruppe/Verzeichnis
Angabe des Verzeichnisses in das gemounted werden soll. Das Verzeichnis darf nicht existieren!
Benutzer und Passwort werden in dem Fall als Klartext in der EGroupware-Datenbank gespeichert!
Um Home-Verzeichnisse zu mounten:
docker exec -it egroupware /usr/share/egroupware/filemanager/cli.php mount --user root_admin --password ‘PWvonadmin’ ‘smb://$user:$pass@server/$user’ /home/$user/Eigene Dateien
$user
Wird beim Mounten durch den angemeldeten EGroupware-Benutzer ersetzt.
$pass
Wird beim Mounten durch das Passwort des Benutzers aus der EGroupware-Datenbank (Bei lokaler Benutzerdatenbank) ersetzt.
&server/$user
Die Freigabe mit dem Home-Verzeichnis des File-Servers
/home/$user/Eigene Dateien
Mounted in den gleichnamigen Benutzer sein Home-Verzeichnis.
Benutzer und Passwort werden in dem Fall NICHT als Klartext in der EGroupware-Datenbank gespeichert. Es wird das verschlüsselt gespeicherte verwendet.
Ein derartiger Mount gilt/funktioniert dann für alle Benutzer und muss somit nur ein mal ausgeführt/eingetragen werden.
Beispiele
1. Mounten eines Verzeichnisses von einem NAS mit Familienvideos.
Die Videos sind dann neben dem lokalen Zugriff per PC/TV auch auch von extern über die EGroupware möglich. Integriert und sicher.
root@egw201deb:~# docker exec -it egroupware bash
root@ca2ebdd9c019:/# /usr/share/egroupware/filemanager/cli.php mount --user root_admin --password 'PWAdminuser' 'smb://BenutzeraufNAS:PWBenutzeraufNAS@server/share' /home/Familiengruppe/NAS_Video
Ergebnis:
Root access granted!
smb://BenutzeraufNAS:PWBenutzeraufNAS@192.168.178.21/Video/DDTwonky_Video successful mounted to /home/Familiengruppe/NAS_Video
Oder in einem Schritt:
docker exec -it egroupware /usr/share/egroupware/filemanager/cli.php mount --user root_admin --password 'PWvonadmin' smb://BenutzeraufNAS:PWBenutzeraufNAS@192.168.178.21/Video/DDTwonky_Video /home/Familiengruppe/NAS_Video
2. Mounten von Home-Verzeichnissen (Eigene Dateien etc.) eines (Firmen-)Fileservers.
Das Home-Verzeichnis ist somit vom stationären PC in der Firma als auch per EGroupware-Dateimanager von extern erreichbar.
docker exec -it egroupware /usr/share/egroupware/filemanager/cli.php mount --user root_admin --password 'PWvonadmin' 'smb://$user:$pass@server/$user' /home/$user/Eigene Dateien
Anmerkungen:
Bestimmte Zeichen im Passwort erfordern einen Hochstrich ’ um das Passwort: & (weitere?)
Das Zielverzeichnis darf nicht existieren.
Gemountete Verzeichnisse werden mit umount
(gleicher Befehl wie oben) unmountet.
Nach dem mounten muss in Admin/Admin/Cache löschen und Hooks registrieren
ausgeführt werden. Erst danach ist der Ordner im Dateimanager sichtbar.
Die Geschwindigkeit des Dateizugriffs hängt sehr stark an der gesamten Kette. Gerade der Zugriff auf eine langsames NAS kann im EGroupware-Dateimanager deutlich spürbar sein.
Betritt man ein Verzeichnis mit einem gemounteten Verzeichnis, versucht EGroupware auf das Verzeichnis zuzugreifen bevor der Inhalt angezeigt wird. Das kann zu Verzögerungen kommen oder auch zum Problem werden wenn die Share nicht erreichbar ist.
Die in EGw gemounteten Verzeichnisse sind ebenfalls per WebDAV erreichbar.
Mit Collabora Online können auch Dateien aus gemounteten Verzeichnissen bearbeitet werden. Gleichzeitiges Bearbeiten über EGw und Fileserver schließen sich technisch dennoch aus. Vorsicht: Kein locking!
Die Zugriffsrechte müssen über die gesamte Kette richtig gesetzt sein.
Ideal ist es, wenn EGw und der Fileserver mit der gleichen Benutzerdatenbank arbeiten. Somit ist sicher gestellt, dass der Zugriff mit dem richtigen Passwort statt findet. Auch wenn auf dem Fileserver das Passwort ein mal geändert wird. EGroupware kann z. B. per AD oder LDAP angebunden werden.
Doku / Links:
GitHub:
VFS System
Wir bieten technische und organisatorische Unterstützung zu diesem Thema über unseren kommerziellen Support an:
Oder einfach eine E-Mail an info@egroupware.org bzw. Kunden öffnen dazu einfach ein Ticket in unserem Ticketsystem.
Für Fragen, Anregungen usw. bitte wie immer jeweils ein eigenes Thema im Forum erstellen und auf diesen Artikel Bezug nehmen.