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:

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

Das Einbinden von Netzwerk-Freigaben ins GVFS erfolgt entweder über einen Dateimanager (z.B. Nautilus, Thunar oder PCManFM), über das graphische Tool Gigolo oder über die Kommandozeile mit dem Befehl gvfs-mount. Hierzu sind keine Root-Rechte und kein Eintrag in /etc/fstab erforderlich, und es muss auch nirgends ein SUID-Bit gesetzt werden. Die so eingebundenen Freigaben lassen sich auch ohne Root-Rechte wieder aushängen. Mittels GVFS eingebundene Netzwerk-Freigaben sind nicht in /etc/mtab eingetragen.

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. Bis einschließlich (Ubuntu 10.04) sind keine weiteren Pakete nötig. Ab Ubuntu 10.10 muss für die Verwendung von gvfs-mount in der Kommandozeile 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 

Um das GVFS auch in Kubuntu, Xubuntu oder Lubuntu verwenden zu können, müssen weitere Pakete installiert[1] sein:

  • gvfs-backends

  • gvfs-fuse

  • fuse-utils

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install gvfs-backends gvfs-fuse fuse-utils 

sudo aptitude install gvfs-backends gvfs-fuse fuse-utils 

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 mit einem Bluetooth Handy)

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 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.

Hinweis:

Auch die neueren Versionen der in Xubuntu und Lubuntu standardmäßig verwendeten Dateimanager Thunar und PCManFM können mittels GVFS auf Freigaben zugreifen. Die Handhabung unterscheidet sich dabei jedoch etwas von Nautilus.

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 automatisieren werden.

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 Tool 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 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 umschiffen:

  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 Freigaben Dokumente und Texte auf dem Server Heimserver fragt gvfs-mount nacheinander nach Benutzername, Domain und Passwort. Der 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:

sudo 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 Anwendungsprogramme ist dies kein Problem. Es gibt jedoch einige Programme, die für den Dateizugriff einen POSIX-konformen Zugriffspfad verlangen. Auch der in Xfce (Xubuntu) standardmäßig verwendete Dateimanager Thunar kommt in älteren Versionen (vor Version 1.1) mit dieser Syntax nicht zurecht.

Die über gvfs eingebundenen Ordner und Dateien findet man im Verzeichnis /run/user/BENUTZERNAME/gvfs (ab Ubuntu 12.10) oder ~/.gvfs/ (bis Ubuntu 12.04). Wegen des komplizierten Pfads empfiehlt es sich, bei Bedarf mit symbolischen Verknüpfungen (Symlinks) zu arbeiten.

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 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 nicht (wie z.B. bei mount.cifs) für das Einbinden einzelner Freigaben Lanman reaktivieren. Man kann dies nur generell tun, 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 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.

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. 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 6. Februar 2014 17:50 von Lsf Lf erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: GNOME, Xfce, Netzwerk, LXDE, Bluetooth