## [[Vorlage(Getestet, lucid)]] [[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Pakete_installieren:Pakete installieren] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Texteditor öffnen] }}} [[Inhaltsverzeichnis(2)]] '''FuseSMB''' kann ein Netzwerk nach Samba- und Windows-Freigaben durchsuchen ("browsen") und diese über das Kernelmodul [:FUSE: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: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 [:Samba Client SMBNetFS: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. = Grundlegende Funktionsweise = FuseSMB besteht aus zwei Programmteilen. Ein Teil stellt in Verbindung mit dem Kernelmodul [:FUSE: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. = Installation = Das benötigte Kernelmodul '''fuse''' ist bereits in der Standardinstallation enthalten. Zusätzlich muss noch folgendes Paket aus den [:Paketquellen:] installiert werden [1]: {{{#!vorlage Paketinstallation fusesmb }}} Um FuseSMB anwenden zu können, muss das Kernelmodul "`fuse`" geladen sein (siehe [:FUSE:]). = Vorbereitung = == Benutzer in die Gruppe ''fuse'' übernehmen == 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! == Mountpunkt erstellen == 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 ''""'' bezeichnet. = Einbinden und Aushängen = 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: == Einbinden mit "sudo" == {{{#!vorlage Experten Der [#Optionen-von-FuseSMB Parameter] `-s` ist zwingend erforderlich. }}} Mit dem Befehl {{{#!vorlage Befehl # Allgemein: sudo fusesmb -s # 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`` . {{{#!vorlage Befehl # 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. {{{#!vorlage Hinweis 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. }}} == Einbinden als gewöhnlicher Benutzer == 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. {{{#!vorlage Warnung 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. }}} === Zugriffsrechte für den Mountpunkt anpassen === 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: {{{#!vorlage Befehl sudo chown }}} === Die Dateien "fusesmb.conf" und "fusesmb.cache" vorbereiten === 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: {{{#!vorlage Befehl sudo chown ~/.smb/fusesmb.conf sudo chown ~/.smb/fusesmb.cache }}} Nun lassen sich die Freigaben auch ohne ``sudo`` einbinden: {{{#!vorlage Befehl # Allgemein: fusesmb -s #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. === Zugriff auch für andere Benutzer erlauben === 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. {{{#!vorlage Hinweis 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. }}} == Vereinfachtes Einbinden == === Starter im Panel anlegen === 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 `` 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. === Automatisches Einbinden === 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 `` einzutragen und den Eintrag noch mit einem Namen und evtl. Kommentar zu versehen. In [:KDE:] muss man die Befehlszeile ``fusesmb -s `` in den Ordner '''~/.kde/Autostart''' als Textdatei mit geeignetem Namen eintragen und diese dann ausführbar machen. {{{#!vorlage Hinweis 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`` }}} == Aushängen == 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: {{{#!vorlage Befehl # Allgemein: fusermount -u # 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: {{{#!vorlage Befehl sudo fusermount -u }}} Sonst erhält man die etwas irritierende Fehlermeldung, der Mountpunkt sei nicht in der Datei '''/etc/mtab''' vorhanden. {{{#!vorlage Hinweis 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. }}} = Konfigurieren und Personalisieren = Dieser Abschnitt betrifft vor allem die Verwaltung von Mehrbenutzer-Systemen und den Zugriff auf mittels Passwort geschützte Freigaben. == Die Datei fusesmb.conf == === Funktion der Dateien "fusesmb.conf" und "fusesmb.cache" === Ergänzend zu den auf dem Server in der Datei '''[:Samba Server/smb.conf: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. {{{#!vorlage Warnung 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). }}} === Die Struktur von fusesmb.conf === In Anlehnung an '''smb.conf''' ist auch '''fusesmb.conf''' in Bereiche eingeteilt, die in eckigen Klammern angegeben werden: 1. ``[global]`` Wie der Name sagt, werden hier globale, d.h. für alle Freigaben gültige Parameter eingetragen 1. ``[ignore]`` Hier kann man Server oder einzelne Freigaben eintragen, die __nicht__ gemountet werden sollen 1. ``[]`` steht für den Namen oder die IP eines bestimmten Servers. Die Eintragungen in diesem Bereich betreffen nur diesen Server. muss mit einem Slash (/) beginnen, darf aber nicht mit einem Slash enden. 1. ``[]`` steht für den Namen einer bestimmten Freigabe. Die Eintragungen in diesem Bereich betreffen nur diese Freigabe. Auch muss mit einem Slash (/) beginnen, darf aber nicht mit einem Slash enden. === Eintragungen im Bereich [global] === * ``interval = `` Zeitintervall zwischen den Aktualisierungen von '''smb.cache'''. : Zahlenwert für Minuten. Beim Wert 0 (oder negativ) unterbleibt die Aktualisierung. Defaultwert: 10 * ``timeout = `` Timeout für die Herstellung einer Verbindung zum Server. : Zahlenwert für Sekunden. Defaultwert: 10 * ``username = `` Ein für alle Freigaben gültiger Benutzername. * ``password = `` Ein für alle Freigaben gültiges Samba-Passwort. Siehe * ``showhiddenshares = `` Versteckte Freigaben anzeigen/nicht anzeigen. Defaultwert: false === Eintragungen im Bereich [ignore] === * ``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. === Eintragungen im Bereich [] === * ``username = `` Ein für diesen Server gültiger Benutzername. * ``password = `` Ein für diesen Server gültiges Samba-Passwort. * ``showhiddenshares = `` Versteckte Freigaben dieses Servers anzeigen/nicht anzeigen. Defaultwert: false * ``ignore = `` Den Server nicht einbinden/einbinden. Defaultwert: false (d.h. einbinden) === Eintragungen im Bereich [] === * ``username = `` Ein für diese Freigabe gültiger Benutzername. * ``password = `` Ein für diese Freigabe gültiges Samba-Passwort. Eintragungen im Bereich [] überschreiben konkurrierende Eingaben im Bereich [] und diese wiederum ünerschreiben solche im Bereich [global]. Zeilen, die mit "#" oder ";" beginnen, sind Kommentarzeilen. Sie werden nicht ausgeführt. {{{#!vorlage Hinweis 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. }}} == Optionen von FuseSMB == FuseSMB unterstützt eine große Zahl von [:FUSE:Optionen des Kernelmoduls FUSE]. Über den Befehl {{{#!vorlage 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=,gid=`` Die auf dem Client gültigen Besitzrechte an einen Benutzer und eine Gruppe übertragen. Die Kennungen und müssen als Zahlenwerte eingetragen werden (siehe [:Benutzer_und_Gruppen:]) * ``-o umask=`` Durch bitweises Maskieren die Zugriffsrechte weiter einschränken. Siehe [wikipedia_en:umask:]. Mehrere Parameter können durch Kommas getrennt aneinander gefügt werden: {{{#!vorlage Befehl #Allgemein: fusesmb -s -o [,,...] #Beispiel fusesmb -s ~/Samba-Shares -o allow_other,umask=033 }}} == Individuelle Zugriffsrechte == === Variante für statische Netzwerke === In statischen Netzwerken kann man oftmals auf das Durchsuchen des Netzwerks (den "Crawler") und auf regelmäßige Aktualisierungen verzichten. Dies geschieht folgendermaßen: 1. In die Datei '''~/.smb/fusesmb.conf''' trägt man ``interval = 0`` ein. 1. 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. 1. Nun verändert man die Zugriffsrechte für '''~/.smb/fusesmb.cache''' so, dass FuseSMB diese Datei zwar lesen, nicht aber beschreiben kann, z.B. {{{#!vorlage Befehl sudo chmod 0400 ~/.smb/fusesmb.cache }}} {{{#!vorlage Hinweis 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. }}} == Praktische Beispiele == 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 }}} = Probleme und Lösungen = 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: {{{#!vorlage Befehl sudo fusesmb -s }}} Root-Rechte (``sudo``) sind je nach Konfiguration (siehe oben) nicht zwangsläufig erforderlich, entscheidend ist die Angabe von '''``-s``'''! == Die Aktualisierung bleibt aus == Wenn das Durchsuchen des Netzwerks nach verfügbaren Freigaben und die Aktualisierung der Einträge nicht funktionieren, sind dafür folgende Ursachen möglich: 1. FuseSMB kann die Datei '''~/.smb/fusesmb.conf''' nicht lesen und/oder in die Datei '''~/.smb/fusesmb.cache''' nicht schreiben. Überprüfen Sie die Zugriffsrechte! 1. 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. 1. FuseSMB war in der gleichen Sitzung vorher bereits mit anderen Zugriffsrechten gestartet worden. Starten Sie den Rechner neu oder melden Sie sich neu an. == Warnungen und Hinweise == {{{#!vorlage Warnung 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! }}} {{{#!vorlage Hinweis Die [:Shell/man:Manpage] enthält weiterführende Informationen und genaue Erklärungen der einzelnen Parameter und sollte auf jeden Fall bei Problemen gelesen werden. }}} = Links = * [http://www.ricardis.tudelft.nl/~vincent/fusesmb/ FuseSMB-Homepage] {en} * [https://help.ubuntu.com/community/FuseSmb User documentation FuseSMB] {en} * [http://doc.ubuntu-fr.org/fusesmb Anleitung im französischen Wiki] {fr} # tag: System, Netzwerk