ubuntuusers.de

ubuntuusers.deWikigvfs-mount

gvfs-mount

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/service.png Das GVFS (Gnome Virtual File System) ist eine virtuelle Dateisystemebene, die den Zugriff auf Dateien über verschiedenste Netzwerk-Protokolle ermöglicht. GVFS ersetzt das frühere „GnomeVFS“. Im Gegensatz zu diesem benötigt das GVFS jedoch keine komplette GNOME-Arbeitsumgebung, sondern lediglich GTK2.

Zur Nutzung sind keine Root-Rechte und kein Eintrag in der Datei /etc/fstab erforderlich, und es muss auch nirgends ein SUID-Bit gesetzt werden. Die so eingebundenen Freigaben lassen sich ebenfalls ohne Root-Rechte wieder aushängen. Mittels GVFS eingebundene Netzwerk-Freigaben sind daher nicht in der Datei /etc/mtab eingetragen.

Das Einbinden von Netzwerk-Freigaben oder Online-Speichern via GVFS erfolgt entweder direkt über einen Dateimanager (z.B. Nautilus, Thunar oder PCManFM), über das grafische Werkzeug Gigolo oder über die Kommandozeile mit dem Befehl gvfs-mount.

Besonderer Wert wurde beim GVFS darauf gelegt, das Einbinden möglichst einfach zu gestalten. Eine individuelle Auswahl von Mount-Optionen ist deshalb nicht vorgesehen. Auch unterstützt gvfs-mount nicht immer alle Möglichkeiten des jeweils verwendeten Netzwerk-Protokolls. So unterstützt z.B. gvfs-mount bei Samba im Gegensatz zu mount.cifs die „cifs-UNIX-Extensions“ nicht.

Installation

GVFS gehört als Bestandteil von GNOME zur Standard-Installation von Ubuntu und neuerdings auch von Xubuntu. Um das GVFS auch in Kubuntu oder Lubuntu sowie älteren Versionen von Xubuntu verwenden zu können, müssen zudem folgende Pakete installiert sein:

  • gvfs-backends

  • gvfs-fuse

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install gvfs-backends gvfs-fuse 

sudo aptitude install gvfs-backends gvfs-fuse 

Für die Verwendung von gvfs-mount auf der Kommandozeile muss eventuell zusätzlich noch folgendes Paket installiert[1] werden:

  • gvfs-bin

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install gvfs-bin 

sudo aptitude install gvfs-bin 

Anwendung

Unterstützte Netzwerk-Protokolle

Folgende Netzwerk-Protokolle werden derzeit vom GVFS unterstützt:

  • Samba bzw. Windows-Freigaben (smb://)

  • FTP (ftp://)

  • SSH und SFTP (ssh:// bzw. sftp://)

  • WebDAV (dav:// und davs://)

  • OBEX-FTP (obex://[xx:xx:xx:xx:xx:x] zum Browsen und Datenaustausch über Bluetooth)

Das Netzwerk-Protokoll NFS wird derzeit vom GVFS leider nicht unterstützt.

Ähnlich wie Netzwerk-Protokolle behandelt das GVFS auch Folgendes:

  • Datenträger (computer://)

  • Papierkorb (trash://)

  • Netzwerkumgebung (network://)

  • Brennprogramme (burn://)

  • Digitalkameras (gphoto2://)

Auflösung von Rechnernamen

Grundsätzlich werden Rechner im Netzwerk über ihre IP-Adresse angesprochen. Liegt ein entsprechender Eintrag in der Datei /etc/hosts vor, kann statt dessen auch der Rechnername verwendet werden. Manche Dienste stellen auch eigene Dienste zur Namensauflösung zur Verfügung (z.B. nmbd bei Samba), auf die das GVFS zurückgreifen kann.

Unabhängig davon unterstützt das GVFS auch die Namensauflösung über Avahi. Hierzu muss an den Rechnernamen noch ".local" angehängt werden (Beispiel: Heimserver.local). Über Avahi werden nur Rechner erkannt, auf denen ebenfalls ein Zeroconf-Service läuft (Avahi bei Linux oder Bonjour bei Mac OS X). Avahi gehört in Ubuntu zur Standard-Ausrüstung.

Transparente Verwendung in Nautilus

Bindet man unter GNOME Netzwerk-Freigaben über Nautilus ("Orte -> Netzwerk") oder übers GNOME-Menü ("Orte -> Verbindung zu Server") ein, so werden intern die gleichen Routinen wie bei gvfs-mount verwendet (siehe Samba Client GNOME). Eingebundene Freigaben erscheinen auf dem Desktop mit einem besonderen Symbol. Außerdem wird die Freigabe nach dem Einbinden gleich in einem Nautilus-Fenster geöffnet.

Kann auf die Freigaben wahlweise mit und ohne Eingabe von Benutzername und Passwort zugegriffen werden (evtl. mit unterschiedlichen Rechten), wählt Nautilus automatisch stets den einfacheren Weg ohne Passwort. Beim Zugriff über "Orte -> Verbindung zu Server" hat man hingegen immer die Möglichkeit, zwischen einem Zugriff mit und ohne Passwort zu wählen.

Mit gvfs-mount werden Freigaben immer temporär, d.h. für die jeweilige Sitzung, eingebunden. Nach einem Benutzerwechsel oder Neustart müssen sie wieder neu gemountet werden. Dies kann automatisiert werden.

Hinweis:

Auch die neueren Versionen der in Xubuntu und Lubuntu standardmäßig verwendeten Dateimanager Thunar und PCManFM können mittels GVFS auf Freigaben zugreifen.

Gigolo

Auch wenn der verwendete Dateimanager das GVFS nicht unterstützt (z.B. ältere Versionen von Thunar oder PCManFM), braucht man deshalb auf ein grafisches Werkzeug für gvfs-mount nicht zu verzichten. Das Programm Gigolo ist eine übersichtlich gestaltete Alternative.

Im Gegensatz zu Gigolo verwenden PyNeighborhood und Smb4K kein GVFS.

gvfs-mount im Terminal

gvfs-mount lässt sich auch im Terminal[2] und in Skripten verwenden. Eine knappe Übersicht über die Syntax erhält man mittels

gvfs-mount -h 

Einhängen

Üblicherweise muss man vor dem Einbinden von Dateisystemen immer über einen Mountpunkt festlegen, an welchem diese eingehängt und über welchen diese anschließend angesprochen werden. Bei gvfs-mount ist dies nicht so. Es ist kein Mountpunkt nötig, und die Freigaben werden nach dem Einhängen mit genau der gleichen Syntax angesprochen, mit der sie eingehängt wurden. Um die Samba- bzw. Windows-Freigabe Musik des Servers Heimserver einzuhängen, genügt also die Befehlszeile

gvfs-mount smb://Heimserver/Musik 

Eventuell noch benötigte Angaben von Benutzername, Domain und Passwort werden interaktiv erfragt. Anschließend erscheint auf dem Desktop oder im verwendeten Dateimanager das Symbol für den Netzwerk-Ordner "Musik auf Heimserver", genau wie wenn das Einbinden grafisch über Nautilus oder "Verbindung zu Server" erfolgt wäre.

Bis einschließlich Ubuntu 12.04 werden Netzwerk-Freigaben physikalisch unterhalb von ~/.gvfs/ ins Dateisystem eingehängt (gemountet). Ab Ubuntu 12.10 wird stattdessen der Ordner /run/user/BENUTZERNAME/gvfs bzw. ab Ubuntu 14.04 /run/user/BENUTZER-UID/gvfs verwendet.

Aushängen

Mit gvfs-mount eingebundene Freigaben sind nicht in /etc/mtab eingetragen und können deshalb auch nicht mit dem Befehl umount wieder ausgehängt werden. Zum Aushängen verwendet man statt dessen den Befehl gvfs-mount mit dem Parameter "-u". Beispiel:

gvfs-mount -u smb://Heimserver/Musik 

Automatisches Einbinden

Mount-Skript

Für Freigaben, die ohne Angabe von Benutzername und Passwort eingebunden werden können, genügt es, die Befehlszeilen unverändert in ein Skript zu übernehmen:

#!/bin/bash
gvfs-mount smb://Heimserver/Fotos
gvfs-mount smb://Heimserver/Musik

Sind jedoch zusätzliche Eingaben (z.B. von Benutzername und Passwort) nötig, wird man diese beim Abarbeiten eines Skripts nicht gerne interaktiv vornehmen. gvfs-mount bietet zwar selbst keine Optionen an, um die Zugangsdaten im Skript zu übergeben. Es gibt aber zwei Lösungsansätze, die dieses Manko umgehen:

  1. Man kann die Zugangsdaten von GNOME speichern lassen und wird deshalb im Skript von gvfs-mount nicht mehr nach den Zugangsdaten gefragt. Dazu genügt es, das Laufwerk einmal mit Nautilus oder "Verbindung zu Server" einzuhängen und bei der Frage nach den Zugangsdaten die Option "nie vergessen" auszuwählen. Das Passwort wird dabei im Schlüsselbund (Menü: "System -> Einstellungen -> Passwörter und Verschlüsselung") abgelegt. Da der GNOME-Schlüsselbund selbst standardmäßig mit dem Login-Passwort verschlüsselt ist und erst bei der Anmeldung des Benutzers wieder entschlüsselt wird, ist diese Methode sicherheitstechnisch die bessere. Selbst ein Benutzer mit Root-Rechten kann die so gespeicherten Passwörter nicht lesen.

  2. Man kann gvfs-mount die Antworten auch durch eine Eingabe-Umleitung übergeben. Dazu wird der Inhalt einer Credentials-Datei als "Standard-Eingabe" an gvfs-mount übergeben. Dies ist eine Textdatei mit beliebigem Namen, die man vorzugsweise versteckt im eigenen Heimverzeichnis anlegt (z.B. /home/BENUTZERNAME/.smbcreds). Diese enthält in jeder Zeile der Reihe nach die Antwort auf jede sonst interaktiv gestellte Frage. Braucht eine Frage nicht beantwortet zu werden, ist dafür eine Leerzeile vorzusehen. Um zu wissen, in welcher Reihenfolge die Fragen gestellt werden und wie viele Zeilen nötig sind, genügt es, die Befehlszeile vorher einmal direkt im Terminal einzugeben.

    • Beispiel: Zum Einbinden der Samba- bzw. Windows-Freigaben Dokumente und Texte auf dem Server Heimserver fragt gvfs-mount nacheinander nach Benutzername, Domain und Passwort. Der Samba-Benutzername sei Udo, die Angabe einer Domain ist nicht erforderlich, und das Passwort laute geheim. Dann hat die Credentials-Datei folgenden Inhalt (die Leerzeile für die Domain ist wichtig):

      Udo
      
      geheim


      Die Befehlszeile im Skript lautet dann

      #!/bin/bash
      gvfs-mount smb://Heimserver/Dokumente </home/udo/.smbcreds
      gvfs-mount smb://Heimserver/Texte </home/udo/.smbcreds


      Wegen des unverschlüsselt eingetragenen Passworts sollte die Credentials-Datei noch mit:

      chmod 0600 /home/udo/.smbcreds 

      vor fremden Blicken geschützt werden.

      Achtung!

      In einem unverschlüsselten Heimverzeichnis können auch solcherart geschützte Dateien immer noch von Fremden mit Root-Rechten oder mittels einer Live-CD eingesehen werden!

      Experten-Info:

      Der Aufbau der Credentials-Datei stimmt bei gvfs-mount und mount.cifs nicht überein.

      Das Mount-Skript muss dann nur noch ausführbar gemacht werden (in Nautilus: Rechtsklick, dann "Eigenschaften -> Zugriffsrechte -> Ausführen").

Automatisches Mounten beim Einloggen

Um ein Skript beim Einloggen des Benutzers automatisch auszuführen, wird sein Zugriffspfad in "System -> Einstellungen -> Startprogramme" eingetragen. Weil in diesem Fall die Freigaben erst nach dem Einloggen des Benutzers eingebunden werden, ergeben sich - im Gegensatz zur Verwendung von fstab-Einträgen mit cifs - auch bei WLAN, die mit einem der Netzwerk-Manager eingerichtet wurden, meist keine Probleme. Sollte dies einmal doch der Fall sein, kann man entweder etwas Wartezeit vorsehen (z.B. eine Zeile sleep 20 vor der ersten Zeile mit cifs-mount einfügen) oder auch das Skript direkt beim verwendeten Netzwerk-Manager als "Post-Connection-Script" eintragen (siehe dazu Dispatcher oder Wicd). Das cifs-Shutdown-Problem tritt mit gvfs-mount nicht auf.

Hinweis:

Trägt man in "System -> Einstellungen -> Startprogramme" das Skript nicht direkt ein, sondern mit vorgestelltem gnome-terminal -e, so erscheint eine eventuelle Passwortabfrage von gvfs-mount nach dem Login in einem Terminal Fenster und kann dort beantwortet werden.

Hinweis:

Skripte, in denen gvfs-mount verwendet wird, sollte man keinesfalls in /etc/rc.local eintragen. Weil diese Datei schon vor dem Einloggen des jeweiligen Benutzers abgearbeitet wird, würde dann der Ort noch nicht feststehen, an dem der physikalische Ordner für das GVFS anzulegen ist.

Eine ausführliche Anleitung speziell für das automatische Einbinden externer Laufwerke, die an einer Fritz!Box angeschlossen sind, findet sich im Artikel FritzBox/Automount USB-Speicher.

GVFS und FUSE, alternativer Zugriff

Die vom GVFS für den Zugriff auf Netzwerk-Freigaben verwendete Syntax (smb://..., ftp://... usw.) entspricht nicht dem POSIX-Standard. Für die meisten Dateimanager und Anwendungsprogramme ist dies kein Problem. Ein Zugriff über ein Terminal ist mit dieser Syntax jedoch nicht möglich. Außerdem gibt es immer noch einige Programme, die für den Dateizugriff einen POSIX-konformen Zugriffspfad verlangen.

Die über GVFS eingebundenen Ordner und Dateien findet man seit Ubuntu 12.10 im Verzeichnis /run/user/BENUTZERNAME/gvfs (ab Ubuntu 14.04 LTS /run/user/BENUTZER-UID/gvfs). Bis Ubuntu 12.04 wurde das Verzeichnis ~/.gvfs verwendet. Wegen des komplizierten Pfads empfiehlt es sich, bei Bedarf mit symbolischen Verknüpfungen (Symlinks) zu arbeiten.

Einbinden von Online-Speichern

Internet-Provider bieten oftmals noch kostenlosen Online-Speicher an, auf den über den Webbrowser zugegriffen werden kann. Besonders dann, wenn man eine schnelle Internet-Verbindung hat, möchte man diesen auch gerne als Netzwerk-Ordner einbinden. Die vom Provider dafür bereitgestellte Software ist aber nicht immer für Linux geeignet. Da für den Datenaustausch WebDAV verwendet wird, lässt dies sich aber leicht mit gvfs-mount bewerkstelligen. So lautet z.B. die Befehlszeile fürs Einbinden des T-Online-Mediencenters:

gvfs-mount davs://webdav.mediencenter.t-online.de:443 

Die Port-Angabe (:443) ist meist nicht nötig. Als Benutzername muss in diesem Beispiel die T-Online-E-Mail-Adresse und als Passwort das mit T-Online vereinbarte Passwort angegeben werden. Wie oben beschrieben, lässt sich dies natürlich auch automatisieren.

Eine Liste mit Zugangsdaten verschiedener WebDAV-Anbieter findet sich hier.

Einbinden lokaler Datenträger

Der Befehl gvfs-mount ersetzt das frühere gnome-mount. Dazu gehört, dass man damit außer Netzwerk-Freigaben auch lokale Datenträger ("Geräte" bzw. "devices") aus der Systemdatei /dev ohne Root-Rechte und ohne Eintrag in fstab einbinden kann. Dies geschieht mit der Option -d bzw. --device. Beispiel:

gvfs-mount -d /dev/sdb1 

Auch in diesem Fall muss der Mountpunkt nicht von Hand festgelegt werden: gvfs-mount erstellt diesen automatisch und löscht ihn beim Aushängen des Datenträgers wieder selbständig. Im Gegensatz zum Einbinden von Netzwerk-Freigaben werden die Mountpunkte für lokale Datenträger im Ordner /media eingerichtet. Der Zugriff erfolgt mit der gewohnten Syntax für lokale Dateisysteme.

Problembehebung

Freigaben lassen sich nicht einbinden

Lanman-Authentication

Manchmal lassen sich Freigaben von älteren Windows-Servern oder NAS-Geräten trotz korrekter Eingabe von Benutzername und Passwort nicht einbinden. Der Grund kann sein, dass diese noch die (veraltete) Lanman-Authentication verwenden. Diese gilt als unsicher und wird deshalb standardmäßig von Samba nicht mehr unterstützt.

Bei gvfs-mount kann man Lanman nicht, wie z.B. bei mount.cifs für das Einbinden einzelner Freigaben, reaktivieren. Dies kann dies nur systemweit erfolgen, indem man auf dem Client die Datei /etc/samba/smb.conf mit Root-Rechten editiert und im Teil [global] die folgende Zeile einfügt:

client lanman auth = yes

Manchmal kann es für den Zugriff auf die Freigaben von Windows NT und Windows 2000 zusätzlich nötig sein, die folgende Zeile ebenfalls einzufügen:

client ntlmv2 auth = no

Entstellte Datei- und Ordnernamen

Automatisch erzeugte Datei- und Ordnernamen (z.B. durch Kameras oder CD-Ripper) werden im GVFS gelegentlich bis zur Unkenntlichkeit entstellt. Grundsätzlich dürfen Datei- und Ordnernamen im GVFS auch nationale Sonderzeichen (Umlaute, Akzente) sowie Leerzeichen enthalten. Einige Zeichen wie z.B. : , / führen jedoch zu Problemen bei plattformübergreifender Nutzung. Dann gibt es keinen anderen Ausweg, als diese Dateinamen auf dem Server zu ändern - oder die Freigaben ohne GVFS (z.B. mit mount.cifs) einzubinden.

Manche Dateimanager (z.B. Thunar) gestatten es nicht, symbolische Verknüpfungen zum Mountpunkt in /run/user/BENUTZER-UID/gvfs herzustellen. Der Grund dafür sind die Sonderzeichen "=", "," und ":", die dort von gvfs-mount im Dateinamen verwendet werden. Die gewünschten Verknüpfungen lassen sich aber trotz der Sonderzeichen problemlos in einem Terminal [2] mit dem Befehl ls -s QUELLE ZIEL erstellen, wenn den Sonderzeichen ein Backslash ("\") vorangestellt wird. Beispiel:

ls -s /run/user/1000/gvfs/smb-share\:server\=diskstation\,share\=public ~/Diskstation/Public 

Zeitstempel (Datum und Uhrzeit) werden verändert

Manche Netzwerk-Protokolle erlauben die Übertragung der Dateiattribute zwischen Server und Client, z.B. Samba über die "cifs-UNIX-Extensions". Wenn dies von gvfs-mount nicht unterstützt wird, gelten auf den Server kopierte Dateien dort als neu angelegt (erhalten das Datum des Kopiervorgangs). Vor allem bei bidirektionaler Datensynchronisation (Abgleich in beide Richtungen, siehe z.B. Unison, Synkron oder FreeFileSync) kann dies zu erheblichen Problemen führen.

Diese Revision wurde am 30. Oktober 2014 14:41 von Max-Ulrich Farber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: GNOME, Xfce, Netzwerk, LXDE, Bluetooth