Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
FuseSMB kann ein Netzwerk nach Samba- und Windows-Freigaben durchsuchen ("browsen") und diese über das Kernelmodul fuse ins Dateisystem des Client einbinden. Dies ist unter anderem dann sinnvoll, wenn die Desktop-Umgebung bzw. deren Dateimanager keinen Zugriff auf Freigaben bietet (z.B. bei Xfce oder LXDE), oder wenn man auch mit solchen Programmen auf die Freigaben zugreifen möchte, die mit den virtuellen Dateisystemen der Desktop-Umgebungen GNOME und KDE (gvfs, KIO) nicht umgehen können (siehe Samba Client GNOME).
Anspruchsvolleren Anwendern bietet FuseSMB aber auch die Möglichkeit, für jeden Benutzer eine persönliche Auswahl aus den Freigaben zu treffen und die Zugriffsrechte individuell festzulegen. Bei Mehrbenutzer-Systemen ist so eine weitgehende Personalisierung möglich. Dafür ist es nötig, die Datei /etc/fusesmb.conf zu editieren und die wichtigsten Optionen des Kernelmoduls fuse zu kennen.
Praktisch an FuseSMB ist, dass alle verfügbaren Freigaben zwar angezeigt werden, dass aber die Verbindung zum Server nur hergestellt wird, solange man auf eine Freigabe zugreift.
Für kleinere Netzwerke ist oftmals das einfachere Tool SMBNetFS besser geeignet. Dieses baut ebenfalls auf dem Kernelmodul fuse auf, stellt aber bereits beim Aufruf eine dauerhafte Verbindung zum Server her und bietet weniger Möglichkeiten zur Differenzierung und Personalisierung.
FuseSMB besteht aus zwei Programmteilen. Ein Teil stellt in Verbindung mit dem Kernelmodul fuse ein virtuelles Dateisystem zur Verfügung, und der andere Teil durchsucht in regelmäßigen Zeitintervallen das LAN nach verfügbaren Servern und Freigaben (der sog. "Crawler"). Die Ausgabe des Crawlers wird über die Datei ~/.smb/fusesmb.conf gefiltert und in die einfache Textdatei ~/.smb/fusesmb.cache geschrieben, die dann von dem anderen Programmteil gelesen wird. Die beiden Dateien befinden sich im Homeverzeichnis des jeweils eingeloggten Benutzers im versteckten Ordner ~/.smb. In der Default-Einstellung sind sie trotzdem Eigentum von Root und nur mit Root-Rechten zugänglich.
Das benötigte Kernelmodul fuse ist bereits in der Standardinstallation enthalten.
Zusätzlich muss noch folgendes Paket aus den Paketquellen installiert werden [1]:
fusesmb
mit apturl
Paketliste zum Kopieren:
sudo apt-get install fusesmb
sudo aptitude install fusesmb
Um FuseSMB anwenden zu können, muss das Kernelmodul "fuse
" geladen sein (siehe FUSE).
Weil FuseSMB das Kernelmodul fuse verwendet, müssen alle User, denen der Zugriff auf Freigaben mittels FuseSMB erlaubt werden soll, der Gruppe fuse angehören. Ab Ubuntu 7.10 Gutsy Gibbon ist dies automatisch der Fall. In früheren Versionen muss man diese User erst zur Gruppe fuse hinzufügen. In GNOME kann man hierfür in
"System -> Systemverwaltung -> Benutzer und Gruppen -> Eigenschaften -> Benutzerrechte"
vor "Verwendung von FUSE-Dateisystemen" ein Häkchen setzen. Die Zuordnung des Benutzers zur Gruppe wird erst nach einem erneuten Anmelden aktiviert!
Das Einbinden oder Einhängen (einer Freigabe) in ein bestehendes Dateisystem bezeichnet man auch als "Mounten". Der Ort, an dem dies erfolgt, wird auch "Mountpunkt" genannt. Als Mountpunkt muss ein leerer Ordner eingerichtet werden. Dafür kann jede beliebige Stelle in der Dateihierarchie gewählt werden. Sollen die Freigaben allgemein zugänglich gemacht werden, sind folgende Verzeichnisse üblich:
/media (es erscheint ein Icon auf dem Desktop)
/mnt (es erscheint kein Icon auf dem Desktop)
Sollen die Freigaben hingegen nur für einen bestimmten User verfügbar sein (siehe unten), so wählt man als Mountpunkt einen leeren Ordner in dessen Heimverzeichnis oder auf dessen Desktop. Mehr Informationen dazu findet man in den Artikeln mount und Datenverwaltung.
Im Folgenden wird dieser Ordner mit "<mountpoint>" bezeichnet.
Hat man FuseSMB aus den Paketquellen installiert, dann ist es die Standard-Einstellung, dass man zum Einbinden mittels FuseSMB Root-Rechte benötigt. Dazu wird "sudo" verwendet:
Der Parameter -s
ist zwingend erforderlich.
Mit dem Befehl
# Allgemein: sudo fusesmb -s <mountpoint> # Beispiele: sudo fusesmb -s /media/Samba-Shares sudo fusesmb -s ~/Samba-Shares sudo fusesmb -s ~/Desktop/Samba-Shares
(im Terminal auszuführen) werden alle verfügbaren Samba- und Windows-Freigaben auf einmal in den als Mountpoint vorbereiteten Ordner übernommen. Dort sind sie dann aber Besitz von Root und nur für Root zugänglich. Gewöhnlich will man aber auch anderen Benutzern den Zugang erlauben. Dies geschieht durch den Zusatz -o allow_other
.
# Beispiel: sudo fusesmb -s ~/Samba-Shares -o allow_other
Nun kann man auf Freigaben mit einem Dateimanager oder mit beliebigen Programmen genau so zugreifen, wie wenn es sich um Dateien im lokalen Dateisystem des Clients handeln würde.
Freigaben, die mittels sudo
ohne den Zusatz allow_other
eingebunden wurden, sind nur mit Root-Rechten sichtbar und erscheinen deshalb auch nicht im Auswahlfenster des Datei-Managers.
Muss man keinen unberechtigten Zugriff auf sensible Daten befürchten, so kann man FuseSMB auch leicht so konfigurieren, dass man Freigaben auch ohne Root-Rechte (ohne sudo
) einbinden darf.
Gewöhnlichen Benutzern das Einbinden mittels FuseSMB zu gestatten, kann ein Sicherheitsrisiko darstellen, weil diese Benutzer dann über die Dateien ~/.smb/fusesmb.conf und ~/.smb/fusesmb.cache möglicherweise Zugriff auf sensible Daten (z.B. Passwörter) erhalten.
Befindet sich der Mountpunkt nicht im Heimverzeichnis des Benutzers, sondern z.B. in /media oder in /mnt, so muss man diesem zunächst die Besitzer-Rechte übergeben:
sudo chown <benutzername> <mountpoint>
FuseSMB braucht zum Funktionieren Zugriff auf die Dateien fusesmb.conf und fusesmb.cache. Diese Dateien werden beim ersten Aufruf von FuseSMB automatisch angelegt und befinden sich im versteckten Ordner ~/.smb im Heimverzeichnis des jeweils eingeloggten Benutzers. Falls man FuseSMB beim ersten Aufruf als Root gestartet hat (z.B. mittels sudo
), ist Root auch der Dateieigentümer. In diesem Fall müssen die Rechte für diese Dateien nun durch folgende Befehlszeilen auf den jeweiligen Benutzer übertragen werden:
sudo chown <benutzername> ~/.smb/fusesmb.conf sudo chown <benutzername> ~/.smb/fusesmb.cache
Nun lassen sich die Freigaben auch ohne sudo
einbinden:
# Allgemein: fusesmb -s <mountpoint> #Beispiele: fusesmb -s ~/Samba-Shares
Der Mountpoint und die eingebundenen Freigaben sind dann Besitz des Benutzers. Dieser kann sie sofort mit einem Dateimanager betrachten oder mit beliebigen Programmen auf sie zugreifen.
Per Default sind die Freigaben nur für denjenigen Benutzer sichtbar und verfügbar, der sie eingebunden hat. Das Recht, sie mit dem Zusatz allow_other
auch für andere Benutzer der Gruppe "fuse" zugänglich zu machen, steht nur Root zu. Durch folgende Zeile in der Konfigurationsdatei /etc/fuse.conf (nur mit Root-Rechten einsehbar)
user_allow_other
wird dieses Recht auch auf andere Benutzer ausgedehnt.
Das Mounten mittels FuseSMB hat keinerlei Einfluss auf die echten Besitz- und Zugriffsrechte auf dem Server. Die beim Mounten festgelegten Rechte sind nur auf dem Client für die betreffende Sitzung gültig (simuliert) und lassen sich bis zum Aushängen der Freigaben (s.u.) nicht mehr ändern. Die Befehle chown und chmod sowie die Dialoge von Gnome oder KDE zur Verwaltung der Zugriffsrechte sind hier unwirksam.
Das Einbinden mittels FuseSMB kann man durch einen Starter im Panel wesentlich vereinfachen. Zum Mounten genügt es dann, diesen anzuklicken.
Zum Einbinden ohne sudo
genügt es, dort den Befehl fusesmb -s <mountpoint>
und eventuell noch einen Namen und Kommentar einzutragen.
Fürs Einbinden mit sudo
muss zusätzlich noch "Ausführen im Terminal" gewählt werden, damit man dort dann das Passwort verdeckt eingeben kann.
Besonders praktisch ist es, die verfügbaren Samba- und Windows-Freigaben bereits beim Einloggen des Benutzers (automatisch) einzubinden. Weil die Verbindung zum Server erst beim Zugriff auf die Freigaben hergestellt wird, benötigt dies weder zusätzliche Prozessorleistung noch unnötigen Speicherplatz.
Fürs Einbinden ohne sudo
ist dies ganz einfach möglich. Zuerst erstellt man einen Mountpunkt (siehe oben).
In GNOME genügt es, in
"System --> Einstellungen --> Sitzungen --> Startprogramme --> Hinzufügen"
die (bereits bekannte) Befehlszeile fusesmb -s <mountpoint>
einzutragen und den Eintrag noch mit einem Namen und evtl. Kommentar zu versehen.
In KDE muss man die Befehlszeile fusesmb -s <mountpoint>
in den Ordner ~/.kde/Autostart als Textdatei mit geeignetem Namen eintragen und diese dann ausführbar machen.
Bei dem Eintrag für den Autostart kann es nötig sein, den Pfad zum Mountpunkt vollständig auszuschreiben.
Beispiel: fusesmb -s /home/otto/Samba-Shares
Mittels FuseSMB gemountete Freigaben werden beim Ausloggen des Benutzers sowie beim Herunterfahren oder Neustart des Rechners automatisch wieder ausgehängt. Deshalb braucht man sich normalerweise um das Aushängen nicht zu kümmern.
Manchmal möchte man jedoch die gemounteten Freigaben von Hand wieder aushängen, z.B. um bei der Verwendung von Suchprogrammen (Media-Player, Virenscanner usw.) zu vermeiden, dass das gesamte Netzwerk durchsucht wird.
Zum Aushängen gibt man im Terminal folgende Befehlszeile ein:
# Allgemein: fusermount -u <mountpoint> # Beispiel: fusermount -u ~/Samba-Shares
Freigaben können nur von demjenigen Benutzer ausgehängt werden, der sie auch eingebunden hat. Insbesondere heißt das, dass mit Root-Rechten (mit sudo
) gemountete Freigaben auch nur genau so wieder ausgehängt werden dürfen:
sudo fusermount -u <mountpoint>
Sonst erhält man die etwas irritierende Fehlermeldung, der Mountpunkt sei nicht in der Datei /etc/mtab vorhanden.
Möchte man nach dem Aushängen der Freigaben diese mit veränderten Besitz- oder Zugriffsrechten wieder einhängen, so kann es sein, dass dies erst nach einem Neustart des Rechners zuverlässig funktioniert.
Dieser Abschnitt betrifft vor allem die Verwaltung von Mehrbenutzer-Systemen und den Zugriff auf mittels Passwort geschützte Freigaben.
Ergänzend zu den auf dem Server in der Datei smb.conf eingetragenen und für alle Clients verbindlichen Zugriffsrechten können in der Datei fusesmb.conf für den jeweiligen Benutzer weitere Festlegungen getroffen werden.
Die Datei fusesmb.conf befindet sich im versteckten Ordner ~/.smb. Sie regelt das Durchsuchen des Netzwerks und filtert die gefundenen Freigaben. Das Ergebnis wird im gleichen Ordner in die Datei fusesmb.cache eingetragen und dient dem Kernelmodul FUSE als Grundlage für das Dateisystem, auf das die verfügbaren Freigaben abgebildet werden. Damit das Durchsuchen des Netzwerks (der "Crawler", s.o.) funktioniert, muss diese Datei unbedingt für FuseSMB lesbar sein. Dies gilt auch, wenn diese völlig leer ist; es werden dann die Default-Einstellungen verwendet. Außerdem muss FuseSMB in die Datei fusesmb.cache schreiben können.
Weil die Datei ~/.smb/fusesmb.conf persönliche Einstellungen und auch Benutzernamen und Passwörter enthalten kann, muss der Zugriff auf deren Besitzer begrenzt sein (Datei-Modus 0600).
In Anlehnung an smb.conf ist auch fusesmb.conf in Bereiche eingeteilt, die in eckigen Klammern angegeben werden:
[global]
Wie der Name sagt, werden hier globale, d.h. für alle Freigaben gültige Parameter eingetragen
[ignore]
Hier kann man Server oder einzelne Freigaben eintragen, die nicht gemountet werden sollen
[<Server>]
<Server> steht für den Namen oder die IP eines bestimmten Servers. Die Eintragungen in diesem Bereich betreffen nur diesen Server. <Server> muss mit einem Slash (/) beginnen, darf aber nicht mit einem Slash enden.
[<Server/Share>]
<Server/Share> steht für den Namen einer bestimmten Freigabe. Die Eintragungen in diesem Bereich betreffen nur diese Freigabe. Auch <Server/Share> muss mit einem Slash (/) beginnen, darf aber nicht mit einem Slash enden.
interval = <value>
Zeitintervall zwischen den Aktualisierungen von smb.cache. <value>: Zahlenwert für Minuten. Beim Wert 0 (oder negativ) unterbleibt die Aktualisierung. Defaultwert: 10
timeout = <value>
Timeout für die Herstellung einer Verbindung zum Server. <value>: Zahlenwert für Sekunden. Defaultwert: 10
username = <username>
Ein für alle Freigaben gültiger Benutzername.
password = <passwort>
Ein für alle Freigaben gültiges Samba-Passwort. Siehe <Link>
showhiddenshares = <true/false>
Versteckte Freigaben anzeigen/nicht anzeigen. Defaultwert: false
servers
Alle Server, von denen keine Freigaben eingebunden werden sollen (Servernamen durch Kommas getrennt)
workgroups
Arbeitsgruppen, von denen keine Freigaben eingebunden werden sollen, ebenfalls durch Kommas getrennt
Einzelne Freigaben vom Einbinden auszuschließen ist (derzeit noch) nicht möglich.
username = <username>
Ein für diesen Server gültiger Benutzername.
password = <passwort>
Ein für diesen Server gültiges Samba-Passwort.
showhiddenshares = <true/false>
Versteckte Freigaben dieses Servers anzeigen/nicht anzeigen. Defaultwert: false
ignore = <true/false>
Den Server nicht einbinden/einbinden. Defaultwert: false (d.h. einbinden)
username = <username>
Ein für diese Freigabe gültiger Benutzername.
password = <passwort>
Ein für diese Freigabe gültiges Samba-Passwort.
Eintragungen im Bereich [<Server/Share>] überschreiben konkurrierende Eingaben im Bereich [<Server>] und diese wiederum ünerschreiben solche im Bereich [global].
Zeilen, die mit "#" oder ";" beginnen, sind Kommentarzeilen. Sie werden nicht ausgeführt.
Für viele Windows-Freigaben und für Samba-Freigaben mit dem Eintrag public = yes
in smb.conf auf dem Server braucht man username
und passwort
nicht einzutragen.
FuseSMB unterstützt eine große Zahl von Optionen des Kernelmoduls FUSE. Über den Befehl
fusesmb -h
werden diese im Terminal aufgelistet. Weil die meisten davon nur für spezielle Anwendungen von Bedeutung sind, wird hier nicht weiter auf sie eingegangen. Allgemein wichtig sind jedoch folgende Parameter:
-s
deaktiviert den sog. "Multi-Threading"-Zugriff (ab Ubuntu 8.10 Intrepid Ibex erforderlich)
-o allow_other
den Zugriff für alle Mitglieder der Gruppe fuse erlauben
-o uid=<uid>,gid=<gid>
Die auf dem Client gültigen Besitzrechte an einen Benutzer und eine Gruppe übertragen. Die Kennungen <uid> und <gid> müssen als Zahlenwerte eingetragen werden (siehe Benutzer und Gruppen)
-o umask=<mask>
Durch bitweises Maskieren die Zugriffsrechte weiter einschränken. Siehe umask.
Mehrere Parameter können durch Kommas getrennt aneinander gefügt werden:
#Allgemein: fusesmb -s <mountpoint> -o <Parameter1>[,<Parameter2>,...] #Beispiel fusesmb -s ~/Samba-Shares -o allow_other,umask=033
In statischen Netzwerken kann man oftmals auf das Durchsuchen des Netzwerks (den "Crawler") und auf regelmäßige Aktualisierungen verzichten. Dies geschieht folgendermaßen:
In die Datei ~/.smb/fusesmb.conf trägt man interval = 0
ein.
In die Datei ~/.smb/fusesmb.cache trägt man von Hand alle Freigaben ein, die eingebunden werden sollen. So kann man die Auswahl sogar noch stärker differenzieren, als dies beim automatischen Eintrag durch den Crawler möglich ist.
Nun verändert man die Zugriffsrechte für ~/.smb/fusesmb.cache so, dass FuseSMB diese Datei zwar lesen, nicht aber beschreiben kann, z.B.
sudo chmod 0400 ~/.smb/fusesmb.cache
Das regelmäßige Aktualisieren erfolgt durch Rundspruch ("Broadcast"). Dieser belastet das Netz und verlangsamt andere Zugriffe. Deshalb ist es sinnvoll, auf überflüssige Aktualisierungen zu verzichten.
Beispiel einer Datei ~/.smb/fusesmb.conf:
; Allgemeine (globale) Festlegungen: [global] ; Default Username and Passwort username=user password=hoechstgeheim ; Auch versteckte Freigaben anzeigen showhiddenshares=true ; Timeout für die Verbindung zum Server in Sekunden timeout = 10 ; Intervall für die Aktualisierung der Freigaben in Minuten interval = 10 ; Server und Arbeitsgruppen, von denen keine Freigaben eingebunden werden sollen [ignore] servers=PC-2,PC-3 workgroups=BUERO,WG2 ; Festlegungen für einzelne(n) Server [/PC-1] username=jane password=geheim showhiddenshares=true ignore=true ; Festlegungen für einzelne Freigabe(n) [/NOTEBOOK/Musik] username=john password=privat
Berühmt-berüchtigt ist die folgende Fehlermeldung (ab Ubuntu 8.10 Intrepid Ibex):
"Transport endpoint is not connected"
Ursache ist die Verwendung der Bibliothek libsmbclient
ab Version 3.2.x. Zur Lösung ist es erforderlich, FuseSMB mit einem Parameter zu starten:
sudo fusesmb -s <mountpoint>
Root-Rechte (sudo
) sind je nach Konfiguration (siehe oben) nicht zwangsläufig erforderlich, entscheidend ist die Angabe von -s
!
Wenn das Durchsuchen des Netzwerks nach verfügbaren Freigaben und die Aktualisierung der Einträge nicht funktionieren, sind dafür folgende Ursachen möglich:
FuseSMB kann die Datei ~/.smb/fusesmb.conf nicht lesen und/oder in die Datei ~/.smb/fusesmb.cache nicht schreiben. Überprüfen Sie die Zugriffsrechte!
In der Datei ~/.smb/fusesmb.conf ist über den Eintrag interval = 0
(oder negativ) die Aktualisierung abgeschaltet. Entfernen Sie den Eintrag (Default=10) oder tragen Sie einen anderen positiven Wert für das Zeitintervall (in Minuten) ein.
FuseSMB war in der gleichen Sitzung vorher bereits mit anderen Zugriffsrechten gestartet worden. Starten Sie den Rechner neu oder melden Sie sich neu an.
Hat man mit FuseSMB viele Freigaben eingebunden, dann sollte man mit Anwendungen, die Verzeichnisse automatisch durchsuchen (Media-Player, Bildbetrachter oder auch z.B. Virenscanner), besonders vorsichtig sein. Sonst kann es leicht geschehen, dass unbeabsichtigt das gesamte Netzwerk durchsucht und dieses damit über Gebühr belastet wird!
Die Manpage enthält weiterführende Informationen und genaue Erklärungen der einzelnen Parameter und sollte auf jeden Fall bei Problemen gelesen werden.
Diese Revision wurde am 6. Januar 2015 16:12 von cornix erstellt.