Die neueste Version finden Sie unter:
http://linux.bononline.nl/linux/automountsmbshares/index.php
Index
- 1. Einführung und Zusammenfassung
Einführung
Seit einiger Zeit suche ich nach einer guten Möglichkeit, meinen Computer das Windows-Netzwerk entdecken zu lassen und Freigaben bei Bedarf einzuhängen. Es gibt im Moment keine Lösung, die gut genug ist. Nach dem Ausprobieren der kioslaves im Desktop meiner Wahl (KDE) und den FUSE-Programmen Fusesmb und SmbNetFs war ich nicht wirklich zufrieden. Es musste eine Möglichkeit geben, meinen Computer alle Arbeitsgruppen/Domänen, Hosts und Freigaben erkennen zu lassen und bei Bedarf eine Freigabe auf einem Host bereitzustellen. Manch einer wird sagen:Von Hand die Scharen Ihrer Wahl montieren und los geht's. Aber nein!! Das ist nicht das, was ich will. Ich kann meinen Computer automatisch alle verfügbaren Hosts und Freigaben entdecken lassen und die Freigabe nur bei Bedarf mounten. Das sollte möglich sein! Und nachdem ich es versucht habe, habe ich herausgefunden, dass es so ist!
Die folgenden Punkte sind imho notwendig:
- automatische Erkennung des SMB-Netzwerks (Domänen, Hosts und Freigaben)
- Aufbau einer Darstellung, die für die in ihrem Homeverzeichnis angemeldeten Benutzer sinnvoll ist
- automatisches Mounten von Anteilen bei Bedarf
- automatisches Unmounten von Shares nach einiger Zeit ungenutzt
- Verwendung eines Kernel-FS wie SMBFS oder CIFS
- unabhängig von einem Desktop Manager
- Unterstützung anderer Netzwerkdienste wie SSH und FTP
Das FUSE-Programm Fusesmb kommt dem, was ich suche, sehr nahe, aber es fehlen die erweiterten Fähigkeiten, die CIFS hat, wie die richtige Darstellung der Berechtigungen, Unterstützung von inotify, Symlink und ATTR/ACL. Ich habe einige Zeit gebraucht, um herauszufinden, warum dem FUSE-Programm diese Funktionen fehlen. FuseSMB basiert auf der smbclient-Bibliothek smbclient.so, die Teil des Samba-Pakets ist, und hat nichts mit smbfs oder cifs zu tun.
Das Ergebnis
Das Ergebnis dieser Konstruktion ist ein netzwerkbezogenes Verzeichnis (Globales Netzwerk) in Ihrem Homeverzeichnis, in dem der Automounter einen durchsuchbaren Baum bereitstellt, um auf alle unterstützten Netzwerkdienste zuzugreifen.
Im Moment unterstützt es die Dienste SMB und SSH (ich arbeite an FTP). Zugriff auf den "Netzwerk-Mountpoint":
/home/sbon/Global Network/
SSH-Hosts
Windows-Netzwerk
Beim Zugriff auf das Windows-Netzwerk (==smb) werden alle Arbeitsgruppen und/oder Domänen angezeigt:
/Home /Sbon /Global Network /
SSH -Hosts
Windows Network
Bononline
cwwerkGroep
Wenn Sie die Arbeitsgruppe CWWERKGROEP eingeben, werden alle Server und anderen Hosts angezeigt:
/Home /Sbon /Global Network /
SSH -Hosts
Windows Network
Bononline
cwwerkGroep
Router
PC1
Wenn Sie den Server-ROUTER eingeben, werden die Freigaben angezeigt, die dem verbindenden Benutzer zur Verfügung stehen:
/Home /Sbon /Global Network /
SSH -Hosts
Windows -Netzwerk
Bononline
cwwerkGroep
Router
cwdocumenten
public
Sbon
Beim Zugriff auf eine Freigabe wird diese automatisch gemountet (mit CIFS oder SMBFS). Die Verwendung von Anmeldeinformationen wird unterstützt, Gastanmeldungen sind die Standardeinstellung.
Um die "Multi-Mount-Map" für den smb-Dienst zu erstellen, wird ein Netzwerkcache verwendet. Es bietet Informationen zu Arbeitsgruppen und/oder Domänen. Hosts und Server und Freigaben verfügbar. Es wird von einigen Skripten verwaltet, die einige Dienstprogramme verwenden (nbtscan, um die Hosts und Arbeitsgruppen/Domänen zu ermitteln, und smbclient, um die Freigaben pro Host zu ermitteln).
Beim Zugriff auf die SSH-Hosts (=ssh) erscheinen alle Hosts, auf die dieser Benutzer Zugriff hat:
/home/sbon/Global Network/
SSH-Hosts
192.168.0.2
Windows-Netzwerk
Hier wird kein Cache verwendet, um diesen Baum zu erstellen, sondern die Datei .known_hosts. Weiterhin war keine mount.sshfs vorhanden. Ich habe eine mit FUSE und sshfs erstellt. (und umount.sshfs).
Beim Zugriff auf den Host 192.168.0.2 wird jetzt das Root-Verzeichnis auf 192.168.0.2 gemountet.
Wie funktioniert es
Diese Konstruktion verwendet den Automounter. Wenn sich ein Benutzer anmeldet und eine neue Sitzung beginnt, wird der Datei auto.master ein „networkmountpoint“ hinzugefügt und der Automounter-Daemon erhält ein „reload“-Signal. Dieser Mountpoint, Name default "Global Network", liegt im Homedirectory des Benutzers. Damit verbunden ist ein Skript (auto.network), das eine Karte erstellt, basierend auf allen unterstützten Netzwerkdiensten und entdeckten Ressourcen. Zusammen mit der Browse-Option bietet dies eine durchsuchbare Karte, auf der Shares/Hosts gemountet werden, wenn darauf zugegriffen wird.
Wenn sich der Benutzer abmeldet und somit die Sitzung endet, wird der Einhängepunkt wieder entfernt und der Automounter-Daemon erhält erneut ein Reload-Signal, um die Änderungen wirksam werden zu lassen.
Hier wird die Fähigkeit von KDM genutzt, Skripte mit Root-Rechten zu Beginn und am Ende einer Sitzung auszuführen.
Derzeit werden nur SMB und SSH unterstützt.
Bekannte Probleme
Es gibt einige Engpässe:
- Wenn eine Freigabe hinzugefügt wird, ein Host offline geht oder sich irgendetwas anderes in der SMB-Umgebung ändert, dauert es einige Zeit, bis es auch im Cache sichtbar ist. Dieser Cache wird durch ein Skript verwaltet, das mit einem "Pull"-basierten Mechanismus arbeitet. Zweitens erkennt der Automounter nicht selbst, dass sich die Daten im Cache geändert haben. Es erneuert seine eigenen Daten (die Multi-Mount-Map) nur nach einem Timeout, und selbst dann erhält es nicht alle Änderungen vollständig.
- Der Automounter wird angewiesen, eine durchsuchbare Mount-Map zu präsentieren. Das bedeutet, dass die Verzeichnisse der obersten Ebene immer verfügbar sind. Das ist eine sehr gute Sache, die verfügbaren Netzwerke sind immer sichtbar und für den Benutzer zugänglich, auch nach einem Timeout. In der Praxis verschwindet manchmal einer der "Netzwerkdienste"...
- der Automounter hat einige Probleme, wenn er mit einer leeren auto.master-Datei (und leeren Includes) startet. Beim Booten, wenn kein Benutzer angemeldet ist und somit keine von Autofs verwalteten Netzwerk-Mountpoints vorhanden sind, muss der Automounter mit einer leeren Map gestartet werden.
Links
Zugriff auf Windows- oder Samba-Freigaben mit autofs
eine Anleitung zum Einrichten von Autofs für SMB-Freigaben unter Verwendung vorhandener Dateien;
Integrieren Ihres Linux-Hosts in eine Windows-Umgebung
eine Anleitung zum Einrichten von autofs, um auf alternative Weise auf Freigaben zuzugreifen.
HOWTO Automount-Dateisysteme (AUTOFS) / udev mit autofs
Hier wird fast die gleiche Konstruktion verwendet, um Hardware über autofs mit udev zu mounten. Auch hier werden Mountpoints dynamisch zur auto.master-Datei hinzugefügt und entfernt.