Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
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 (siehe z.B. Nautilus), über das graphische Tool Gigolo oder über die Shell 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.
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
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 noch folgende Pakete installiert[1] sein:
gvfs-backends
gvfs-fuse
fuse-utils
mit apturl
Paketliste zum Kopieren:
sudo apt-get install gvfs-backends gvfs-fuse fuse-utils
sudo aptitude install gvfs-backends gvfs-fuse fuse-utils
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://
)
Das Netzwerk-Protokoll NFS wird derzeit leider vom GVFS nicht unterstützt.
Ähnlich wie Netzwerk-Protokolle behandelt das GVFS auch Folgendes:
GNOME Mülleimer (trash://
)
Brennprogramme (burn://
)
Digitalkameras (gphoto2://
)
Grundsätzlich werden Server ü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 Services 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 Servernamen noch ".local
" angehängt werden (Beispiel: Heimserver.local
). Über Avahi werden nur Server erkannt, auf denen ebenfalls ein Zeroconf-Service läuft (Avahi, Bonjour). Avahi gehört in Ubuntu zur Standard-Ausrüstung.
Bindet man in 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. 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 verschiedenen Rechten), wählt Nautilus stets automatisch 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. Wie sich dies auch automatisieren lässt, steht hier.
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 nicht das GVFS.
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
Man ist gewohnt, dass man vor dem Einbinden von Dateisystemen immer einen Mountpunkt festlegen muss, 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 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.
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
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:
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 "Verbinding zu Server" zu verbinden und die Option "nie vergessen" bei der Frage nach den Zugangsdaten 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, und erst beim Login des Users wieder entschlüsselt wird, ist diese Methode sicherheitstechnisch die bessere. Selbst ein Benutzer mit Rootrechten kann die so gespeicherten Passwörter nicht lesen.
Man kann gvfs-mount
die Antworten auch durch Eingabe-Umleitung übergeben. Dazu wird der Inhalt einer Credentials-Datei gvfs-mount
als "Standard-Eingabe" angeboten. Dies ist eine Textdatei mit beliebigem Namen, die man vorzugsweise versteckt im eigenen Heimverzeichnis anlegt (z.B. /home/Udo/.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.
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!
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").
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.
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.
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 Ordner ~/.gvfs anzulegen ist.
Eine ausführliche Anleitung speziell für das automatische Einbinden externer Laufwerke, die an einer FritzBox® angeschlossen sind, findet sich hier.
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.
Um auch solchen Programmen den Zugriff zu ermöglichen, bietet GVFS noch einen alternativen Zugriff über den versteckten Ordner ~/.gvfs im Heimverzeichnis des eingeloggten Benutzers an. Für die Freigabe mit dem Zugriffspfad smb://Heimserver/Musik
ergibt sich damit als alternativer Zugriffspfad /home/Udo/.gvfs/Musik auf Heimserver/ . Es ist nicht möglich (und auch nicht sinnvoll), Unterordner oder oder Dateien direkt in den Ordner ~/.gvfs zu kopieren oder zu verschieben bzw. dort neu anzulegen; Schreibzugriffe auf dort befindliche Unterordner oder Dateien sind aber bei entsprechenden Zugriffsrechten problemlos möglich. Greift man über den Dateimanager Nautilus auf den Ordner ~/.gvfs oder darin befindliche Dateien zu, so ändert dieser automatisch die Syntax; bei anderen Dateimanagern (z,B, Thunar) ist dies nicht der Fall.
In Ubuntu 12.10 wird der versteckte Ordner ~/.gvfs im Heimverzeichnis des jeweiligen Benutzers nicht mehr angelegt. Statt dessen findet man die über gvfs eingebundenen Ordner und Dateien im Verzeichnis /run/user/BENUTZERNAME/gvfs. Wegen des komplizierten Pfads empfiehlt es sich, bei Bedarf mit Symlinks zu arbeiten.
Für den alternativen Zugriff verwendet gvfs das Kernel-Modul FUSE. Deshalb können hiervon nur diejenigen Benutzer Gebrauch machen, die in der Gruppe FUSE eingetragen sind. Für den Erstbenutzer ist dies automatisch der Fall; bei weiteren Benutzern kann es nötig werden, den Eintrag von Hand vorzunehmen.
Im Gegensatz zu FuseSMB und Samba Client SMBNetFS, mit welchen überhaupt nur Mitglieder der Gruppe FUSE Freigaben einbinden können, ist bei gvfs-mount
die Zugehörigkeit zur Gruppe FUSE lediglich für den alternativen Zugriff über den Ordner ~/.gvfs nötig.
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 jedoch nicht im versteckten Ordner ~/.gvfs, sondern ganz normal im Ordner /media eingerichtet. Der Zugriff erfolgt mit der gewohnten Syntax für lokale Dateisysteme.
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 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 einzuzufügen
client ntlmv2 auth = no
Automatisch erzeugte Datei- und Ordnernamen (z.B. durch Kameras oder Ripper) werden gelegentlich im GVFS bis zur Unkenntlichkeit entstellt.
Grundsätzlich dürfen Datei- und Ordnernamen im GVFS auch nationale Sonderzeichen (Umlaute, Akzente) sowie Leerzeichen enthalten. Einige Zeichen (z.B. :,/) führen jedoch dazu, dass der ganze Dateiname entstellt wird. Es gibt keinen anderen Ausweg, als diese Dateinamen auf dem Server zu ändern - oder die Freigaben ohne GVFS (z.B. mit mount.cifs
) einzubinden.
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.
Heimnetzwerk: Netzwerk-Protokolle (nicht nur) für den Hausgebrauch.
FUSE: Filesystem in Userspace.
Gigolo: Ein grafisches Tool für gvfs-mount
.
Samba Client GNOME: Über GNOME/Nautilus auf Samba- und Windows-Freigaben zugreifen.
FritzBox/Automount USB-Speicher: Eine Anleitung Schritt für Schritt.