[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:]] [:mount: mount (Partitionen temporär einbinden)] [:fstab: fstab (Partitionen statisch einbinden)] }}} [[Inhaltsverzeichnis(2)]] Mit '''Autofs''' lassen sich Partitionen bei Bedarf automatisch einhängen (mounten) und bei längerer Nichtbenutzung auch automatisch wieder aushängen. Autofs verwendet kein [:gio mount:GVfs per gio mount]. Es lässt sich deshalb auch unter [:KDE:] (Kubuntu) einsetzen. Im Gegensatz zum GVfs können Benutzer die Mountpunkte frei festlegen. Der übliche Weg, Partitionen beim Systemstart automatisch statisch einzubinden, ist ein Eintrag in der Datei '''/etc/fstab''' [6]. Im Gegensatz dazu werden die Partitionen mit Autofs erst dann automatisch eingehängt, wenn auf sie zugegriffen wird. Außerdem lässt sich Autofs so konfigurieren, dass eingehängte Partitionen nach einer frei wählbaren Zeit automatisch wieder ausgehängt werden, wenn kein Zugriff mehr erfolgt. Autofs wurde vor allem zum Einhängen von Netzwerk-Freigaben (z.B. [:NFS:] oder [:Samba:SMB]) konzipiert. Im Vergleich zum Statischen Einbinden [6] verringert es die Belastung des Netzwerks und verbessert damit angeblich dessen Durchsatz. Weil das Einhängen zu einem späteren Zeitpunkt geschieht als die Abarbeitung von '''/etc/fstab''', besteht keine Gefahr, dass das Netzwerk noch nicht funktioniert. Auch "Shutdown-Probleme" (z.B. bei Freigaben, die per [:mount.cifs:] im WLAN als CIFS vfs eingehangen werden) werden durch das automatische Aushängen vermieden. Ein weiterer Anwendungsbereich von Autofs ist das automatische Einbinden externer Datenträger (USB-Sticks und -Platten) mit frei wählbaren Optionen. Die Möglichkeit, den Datenträger bei Nichtbenutzung automatisch rasch wieder auszuhängen, kann einen zusätzlichen (aber keineswegs vollständigen!) Schutz vor Datenverlusten bei unbedachtem Ausstecken bewirken. Für interne Laufwerke bzw. Partitionen bietet Autofs gegenüber dem statischen Einhängen mittels '''fstab'''-Eintrag keine Vorteile. Eine Alternative mit vergleichbarer Funktionalität ist der [wikipedia_en:Berkeley Automounter:Berkeley-Automounter (amd)], der im Paket '''am-utils''' enthalten ist. Der seit [:Xenial:Ubuntu 16.04 LTS] standardmäßig verwendete Sitzungs-Manager [:systemd:] enthält bereits einen einfachen Automounter, mit dem sich einige (aber nicht alle) Funktionen von autofs ausführen lassen. Siehe hierzu auch die [:man:Manpage] `man systemd.mount`. =Installation= Zuerst muss aus den Paketquellen das folgende Paket installiert [1] werden: {{{#!vorlage Paketinstallation autofs }}} =Konfiguration= Die Grundeinstellungen für Autofs werden in der Datei '''/etc/default/autofs''' festgelegt. Normalerweise besteht kein Grund, diese Datei zu editieren und Änderungen daran vorzunehmen. Die Konfiguration wird in zwei Stufen vorgenommen. Die Master-Map-Datei (Master Map File) enthält die Ordner für alle Mountpunkte und ordnet diesen jeweils eine eigene Map-Datei zu. Sowohl die Master-Map-Datei als auch die einzelnen Map-Dateien sind gewöhnliche Textdateien, die mit einem Editor mit Root-Rechten [4] erstellt und bearbeitet werden können. == Die Master-Map-Datei == Die Master-Map-Datei ist eine reine Textdatei, bei der die einzelnen Zeilen folgende Struktur haben: {{{ KEY MAP -OPTIONS }}} Die drei Felder sind durch Leerzeichen oder Tabulatoren voneinander getrennt. Das erste Feld ("KEY") bezeichnet ein Mount-Verzeichnis. Dies ist ein Ordner, in dem die einzelnen Mountpunkte beim Einbinden dann automatisch generiert werden. Im zweiten Feld ("MAP") wird dem betreffenden Mount-Verzeichnis eine Map-Datei mit den jeweils gültigen Mount-Optionen zugeordnet. Die in den einzelnen Map-Dateien angegebenen Namen für die einzelnen Mountpunkte gelten dann relativ zum in der Master-Map-Datei angegebenen Mount-Verzeichnis. Im dritten Feld ("OPTIONS") können dann bei Bedarf noch - durch Kommas getrennt - Optionen angegeben werden, die für alle in der Map-Datei aufgeführten Mountpunkte gelten. Dieses Feld beginnt immer mit dem Zeichen "-" (Minus). Die Master-Map-Datei wird standardmäßig unter '''/etc/auto.master''' angelegt. {{{#!vorlage Hinweis Steht an der ersten Stelle in einem Optionen-Feld eine Option, die selbst schon mit einem Minus-Zeichen beginnt (z.B. `-strict`), so ergeben sich daraus zwei aufeinander folgende Minus-Zeichen (also z.B. `--strict`). }}} Beispiel: {{{ /media/nfs /etc/auto.nfs /usb /etc/auto.usb --strict }}} Die Map-Dateien zu den Verzeichnissen '''/media/nfs''' und '''/usb''' sind die Dateien '''/etc/auto.nfs''' und '''/etc/auto.usb'''. Die dort angegebenen Namen für die Mountpunkte sind relative Angaben bezüglich dieser Ordner. Die in der Master-Map-Datei eingetragenen Verzeichnisse müssen existieren bzw. von Hand mit Root-Rechten [4] eingerichtet werden. Beispiel: {{{#!vorlage Befehl sudo mkdir /media/nfs }}} Alternativ ist es auch möglich, in der Master-Map-Datei keine explizite Ordner-Angabe zu machen, sondern statt eines Ordners nur `/-` einzutragen. Dann müssen in den entsprechenden Map-Dateien für die Mountpunkte jeweils die kompletten, d.h. absoluten, Pfade eingetragen werden. Beispiel: {{{ /- /etc/auto.backup }}} Als Optionen kommen die für das betreffende Dateisystem möglichen Mount-Optionen in Frage. Zusätzlich gibt es noch spezifische Optionen für Autofs, von denen die wichtigsten in folgender Tabelle aufgeführt sind. Zur Unterscheidung von den Mount-Optionen beginnen diese mit dem Zeichen "-" (Minus). {{{#!vorlage Tabelle Besondere Optionen für Map-Dateien +++ Kurzform Langform Bedeutung +++ `-t=NUM` `--timeout=NUM` Zahlenwert. Nach `NUM` Sekunden ohne Zugriff wird die Partition ausgehängt. `NUM=0` bedeutet, dass die Partition nicht automatisch ausgehängt wird. Defaultwert: 300 (5 Minuten). +++ (keine) `-strict` Bewirkt, dass Fehler beim Einbinden von Partitionen oder Freigaben als "fatal" gelten und dass folglich dann auch alle anderen Dateisysteme nicht eingebunden werden. Default: `-nonstrict`. +++ `-f=FSTYPE` (?) `-fstype=FSTYPE` Präzisiert den Dateisystem-Typ. Beispiele: `fstype=cifs` oder auch `fstype=auto` für automatisch erkennbare Dateisysteme. +++ (keine) `nosymlink` Dies ist eine Pseudo-Mount-Option, die deshalb nicht mit dem Zeichen "-" (Minus) beginnt. Im Wesentlichen bewirkt diese, dass auf gemounteten Netzwerk-Freigaben symbolischen Links nicht gefolgt wird. }}} {{{#!vorlage Hinweis Es ist nicht sinnvoll, in der Master-Map-Datei als Verzeichnisse Systemordner wie '''/media''' oder '''/mnt''' einzutragen, da diese dann ausschließlich von Autofs verwaltet werden und somit nicht mehr anderweitig benutzbar sind. Besser ist es, innerhalb von '''/media''' oder im Wurzelverzeichnis für Autofs eigene Ordner anzulegen, z.B. '''/media/nfs''' oder '''/usb'''. }}} == Map-Dateien == Auch die Map-Dateien sind gewöhnliche Textdateien. Im Prinzip können diese an jedem beliebigen Ort angelegt werden. Üblich (und empfohlen) ist jedoch, diese im Systemordner '''/etc''' anzulegen und sie mit '''/etc/auto.XXX''' zu bezeichnen, wobei '''XXX''' einen die jeweilige Map-Datei einprägsam charakterisierenden Dateinamen darstellt. Bei der Installation von Autofs werden standardmäßig die Map-Dateien '''auto.misc, auto.net''' und '''auto.smb''' eingerichtet. Es besteht aber keinerlei Notwendigkeit, diese zu benutzen; man kann sich genau so gut selbst mit Root-Rechten [4] eigene Map-Dateien anlegen. Eine Map-Datei kann auf verschiedene Arten angelegt werden. Die einfachste Art ist, in ähnlicher Weise wie in der Datei '''/etc/fstab''', für jede einzubindende Partition oder Freigabe eine eigene Zeile vorzusehen. Man kann aber auch mehrere verwandte Freigaben in einem "Mehrfach-Mount" zusammenfassen oder mit einem Skript kollektive Angaben für eine Gruppe von Freigaben machen. Dieses Verfahren bietet vor allem bei größeren Netzwerken Vorteile, ist aber wesentlich anspruchsvoller. ===Zeilen-Struktur=== Für jede einzubindende Partition oder Freigabe wird eine Zeile eingetragen, die wieder aus drei Feldern nach folgendem Schema besteht: {{{ KEY -OPTIONS LOCATION }}} Im ersten Feld (`KEY`) wird der Mountpunkt eingetragen. Ist in der Master-Map-Datei ein Mount-Verzeichnis angegeben, gilt die Angabe relativ zu diesem; andernfalls ist der komplette Pfad anzugeben. Für das zweite Feld (`OPTIONS`) gilt das Gleiche wie bei der Master-Map-Datei, nur dass die hier eingetragenen Optionen nur für diese eine Partition oder Freigabe gelten. Die Angabe von Optionen darf auch ganz entfallen. In das dritte Feld (`LOCATION`) ist eine Ortsbezeichnung für die Partition oder Freigabe einzutragen, gewöhnlich beginnend mit einem Kolon ("Doppelpunkt"). Beispiele sind `:/dev/sda5`, `://192.168.1.101/Musik` (SMB) oder `192.168.1.101:/Musik` (NFS). Anstatt des Eintrags in der Gerätedatei '''/dev''' kann bei lokalen Partitionen auch die UUID (ohne Kolon) angegeben werden). Dies ist vor allem bei USB-Datenträgern zu empfehlen. Die Inhalte der drei Felder, nicht jedoch deren Anordnung, entsprechen weitgehend den den Regeln für die Datei '''/etc/fstab''' [6]. Achtung: Dateien mit dieser Struktur dürfen '''nicht''' als ausführbar markiert sein. ## Die vorinstallierte Datei '''/etc/auto.misc''' gibt Anregungen zur Gestaltung eigener Map-Dateien. {{{#!vorlage Hinweis Namen, die Trenn- oder Strukturzeichen (Leerzeichen, $ usw.) enthalten, müssen in Anführungszeichen gesetzt werden ("NAME"). }}} ===Mehrfach-Mount=== Bei einem Mehrfach-Mount ("Multiple Mounts") lassen sich ganze Serien von Mount-Vorgängen in einer einzigen Zeile beliebiger Länge zusammenfassen. Diese besteht dann aus einer Serie von durch Leerzeichen oder Tabulatoren voneinander getrennten Feldern, die nach folgendem Schema aufgebaut ist: {{{ KEY -OPTIONS /MPOINT1 -OPTIONS1 LOCATION1 /MPOINT2 -OPTIONS2 LOCATION2 ... }}} Dabei bedeutet `KEY` jetzt einen gemeinsamen Ordner, in dem sich dann die einzelnen Mountpunkte `MPOINT1`, `MPOINT2` usw. befinden. Im zweiten Feld `-OPTIONS` können gemeinsame Optionen eingetragen werden, und die Felder `-OPTIONS1`, `-OPTIONS2` usw. enthalten Optionen, die nur für den jeweiligen Mountpunkt gelten. Nicht benötigte Optionen-Felder dürfen einfach ausgelassen werden. Solche Mehrfach-Mount-Zeilen können sehr lang und unhandlich werden. Übersichtlicher wird es, wenn man sie in mehrere kurze Einzelzeilen aufspaltet, wobei dann die Zeilenwechsel durch einen Backslash (\) unterdrückt ("escaped") werden müssen: {{{ KEY -OPTIONS \ /MPOINT1 -OPTIONS1 LOCATION1 \ /MPOINT2 -OPTIONS2 LOCATION2 \ ... }}} Ein Beispiel findet sich [#Mehrere-SMB-Freigaben weiter unten]. ===Skript-Struktur=== Eine Map-Datei kann auch ein Skript enthalten. Dieses muss in der Regel die Partitionen oder Freigaben ermitteln, die nach bestimmten Vorgaben einzuhängen sind, und das dann für diese eine dem obigen Schema entsprechende Mehrfach-Mount-Zeile (oder einen Fehler-Code) zurückgibt. Ein Beispiel für eine solche Map-Datei ist [#Ganzes-SMB-Netz unten] aufgeführt. Weitere Beispiele für solche Map-Dateien sind die im Paket '''autofs''' enthaltenen Dateien '''/etc/auto.smb''' und'''/etc/auto.net'''. {{{#!vorlage Hinweis Das aktuelle Paket '''autofs5''' enthält leider keine Beispieldateien mehr. }}} Map-Dateien, die ein Skript enthalten, müssen ausführbar sein. Empfohlen wird für diese der [:chmod#Oktal-Modus:Modus 0755]. {{{#!vorlage Hinweis Die Erstellung eigener Skripte für Map-Dateien erfordert vertiefte Kenntnisse in Linux. Deshalb wird dies hier nicht weiter erläutert. Weniger erfahrene Benutzer können trotzdem die beiden Dateien '''/etc/auto.smb''' und '''/etc/auto.net''' benutzen oder diese nötigenfalls geringfügig verändern. }}} {{{#!vorlage Experten Alternativ kann Autofs auch über [wikipedia:Lightweight Directory Access Protocol:LDAP] konfiguriert werden. Siehe hierzu [https://help.ubuntu.com/community/AutofsLDAP] {en}. }}} =Anwendung= ==Starten und Beenden== Autofs kann nur Partitionen oder Freigaben einhängen, die nicht bereits eingebunden sind. Welche Geräte eingebunden sind, erfährt man, wenn man den Befehl `mount` ohne Parameter aufruft. Nötigenfalls müssen diese einzeln mit `sudo umount PARTITION` ausgehängt werden, bevor man Autofs von Hand starten kann. Weil Autofs beim Bootvorgang automatisch gestartet wird, müssen außerdem in '''/etc/fstab''' alle Einträge für über Autofs einzubindende Partitionen und Freigaben beseitigt oder mit dem Zeichen "#" auskommentiert werden. Mit Autofs einzubindende Partitionen und Freigaben sind systemweit verfügbar. Deshalb wird Autofs beim Bootvorgang bereits vor dem Anmelden eines Benutzers mit Root-Rechten automatisch gestartet. Um Autofs direkt aufzurufen, benötigt man ebenfalls Root-Rechte [4]. Die dafür nötige Befehlszeile lautet {{{#!vorlage Befehl sudo service autofs KOMMANDO }}}Dabei bedeutet KOMMANDO eines der in folgender Tabelle aufgeführten Kommandos: {{{#!vorlage Tabelle Kommandos für Autofs +++ Kommando Bedeutung +++ `stop` Autofs wird angehalten. Eingehängte Partitionen und Freigaben werden regulär ausgehängt. Bei Partitionen, auf die gerade zugegriffen wird, wird gewartet, bis der Zugriff beendet ist. +++ `start` Autofs wird gestartet +++ `reload` Veränderte Map-Dateien werden übernommen und zukünftig beim Einbinden berücksichtigt. Bereits eingebundene Partitionen bleiben davon bis zum neuen Einhängen unberührt. +++ `restart` Autofs wird angehalten und - ggf. mit veränderter Master-Map-Datei und veränderten Map-Dateien - neu gestartet. Das Kommando `restart` ist anstatt `reload` auszuführen, falls auch Änderungen an der Master-Map-Datei vorgenommen wurden. +++ `status` Der Status von Autofs und ggf. die Prozess-Identifikation wird ausgegeben. }}} ==Das Programm "automount"== Wenn das Programm "autofs" gestartet wird, startet dieses gemäß den in den in den Map-Dateien vorliegenden Einträgen für jede dort eingetragene Partition eine Instanz des Programms "automount" als [wikipedia:Daemon:], der diese bei Bedarf ein- und wieder aushängt. Die Funktion dieser Dämonen wird vom Programm "autofs" gesteuert. {{{#!vorlage Hinweis Der Wiki-Artikel [:Automount:] bezieht sich allgemein auf das automatische Einbinden (Mounten) von Partitionen und nicht etwa auf das hier beschriebene Programm "''automount''". }}} ==udev== In manchen Anleitungen steht, dass noch die [:udev:udev-Regeln] entsprechend angepasst werden müssen, damit Autofs USB-Geräte beim Ein- und Ausstecken erkennen kann. Für bereits bekannte USB-Geräte, für die man bereits einen Eintrag in einer Map-Datei vorgenommen hat, ist dies nicht nötig. Mittels udev die Anwendung von Autofs auch automatisch auf bisher unbekannte, neue USB-Geräte auszudehnen, erfordert mehr Erfahrung im Umgang mit Linux und überschreitet den Rahmen dieses Artikels. =Beispiele= ==USB-Stick mit NTFS== USB-Sticks und externe Datenträger werden standardmäßig beim Booten des Systems oder beim Einstecken automatisch eingebunden. Ist auf diesen ein [:NTFS:]-Dateisystem vorhanden, so werden für dieses die [:NTFS-3G#Standard-Einstellungen:Standard-Einstellungen] verwendet (USER:USER, Mode 0750 bzw. 0640). Eine UNIX-Rechteverwaltung wird dann dort nicht eingerichtet, sodass man die Dateirechte nicht nachträglich noch verändern kann, wie dies z.B. dann nötig ist, wenn man dort öffentliche [:Samba:SMB]-Freigaben (mit Gast-Zugang) einrichten will. Will man die USB-Partitionen mit anderen Einstellungen einbinden, so ist dies außer über einen '''fstab'''-Eintrag auch mittels Autofs möglich. Der folgende Eintrag in der Map-Datei '''/etc/auto.usb''' {{{ usb-stick --timeout=5,fstype=ntfs,permissions UUID=222CEC912CEC60F1 }}} bewirkt, dass die Partition mit der UUID 222CEC912CEC60F1 beim Zugriff im Mount-Punkt '''usb-stick''' mit einer echten UNIX-Dateiverwaltung eingebunden wird (Mount-Option `permissions`). Nach 5 Sekunden Untätigkeit wird die Partition automatisch korrekt ausgehängt. Das Einbinden mit Autofs kann natürlich nur dann funktionieren, wenn vorher das automatische Mounten über die GUI (z.B. GNOME/Nautilus) deaktiviert wird. Siehe hierzu [:Automount#Automount-deaktivieren:]. Die Map-Datei darf nicht ausführbar sein und wird noch in der Master-Map-Datei '''/etc/auto.master''' mit folgender Zeile eingetragen {{{ /media/usb /etc/auto.usb }}} Der Stick wird dann nach '''/media/usb/usb-stick''' gemountet. ==NFS-Freigabe== Zum Einbinden der [:NFS:]-Freigabe "Musik" auf dem Server (hier ein QNAP-NAS) mit der IP "192.168.1.101" eignet sich z.B. folgende Zeile in der Map-Datei '''/etc/auto.QNAP''': {{{ Musik -fstype=nfs,rw,retry=0 192.168.1.101:/Musik }}} Mit folgendem Eintrag in '''/etc/auto.master''' {{{ /QNAP /etc/auto.QNAP --ghost }}} Wichtig ist in diesem Fall die mount-Option retry=0. Diese sorgt dafür, dass mount sofort aufgibt, falls der Server nicht erreichbar ist. Anderenfalls würde mount für zwei Minuten versuchen den Server zu erreichen und so lange blockieren. Dieses Verhalten ist an sich kein Problem. Wenn man aber ein Lesezeichen in Nautilus erstellt, so wird dadurch der Start von gnome sowie vielen gnome-Anwendungen (wie gedit) eben diese zwei Minuten lang blockiert. Das Dateisystem-Backend von gnome versucht anscheinend den Verzeichnisinhalt des Links abzurufen und muss dabei auf den von autofs gestarteten mount-Befehl warten. Läuft der Server, so ist der erste Zugriff sofort erfolgreich, und es tritt keine Blockade auf. Die Option --ghost erzeugt leere Dateiverzeichnisse für alle Shares, damit der Verbindungsaufbau auch nach einem Timeout wieder erzeugt werden kann (siehe SMB - Freigabe). ==NFS-Freigaben browsen== Weil NFS vom GVfs nicht unterstützt wird, können die Dateimanager [:Nautilus:], [:Thunar:] und andere leider Netzwerke nicht nach NFS-Freigaben durchsuchen. Hier bietet die aktuelle Version Autofs-5 nun mit der Option `-hosts` eine gute Alternative. Um die NFS-Freigaben aller erreichbarer Server automatisch aufzulisten und nötigenfalls einzubinden, genügt es, z.B. folgende Zeile in die [#Die-Master-Map-Datei Master-Map-Datei] einzutragen: {{{ /net -hosts --timeout=60 }}} Natürlich muss dafür das Paket '''nfs-common''' installiert sein. Die Option `-hosts` verwendet zum Auffinden der Netzwerk-Freigaben ein ein ähnliches Verfahren wie der Befehl `showmount`. ==SMB-Freigabe== Zuerst muss aus den Paketquellen das folgende Paket installiert werden: {{{#!vorlage Paketinstallation cifs-utils }}} Zum Einbinden der SMB-Freigabe "Musik" auf dem Server mit der IP "192.168.1.101" eignet sich z.B. folgende Zeile in der Map-Datei '''/etc/auto.cifs-shares''': {{{ lokal_Musik -fstype=cifs,uid=1000,credentials=/home/Simon/.smbcredentials ://192.168.1.101/Musik }}} Mit folgendem Eintrag in '''/etc/auto.master''' {{{ /media/cifs /etc/auto.cifs-shares --timeout=60 --ghost }}} wird die Freigabe dann nach '''/media/cifs/lokal_Musik''' gemountet. Näheres zum Einbinden als CIFS vfs siehe [:mount.cifs:]. Der Schalter --timeout definiert wie viele Sekunden gewartet wird, bis ein ungenutztes Dateisystem unmounted wird. Die Option --ghost erzeugt leere Dateiverzeichnisse in '''/media/cifs/lokal_Musik''' für alle Shares in '''/etc/auto.cifs-shares''', damit der Verbindungsaufbau auch nach einem Timeout wieder erzeugt werden kann. ==Mehrere SMB-Freigaben== Durch folgenden Mehrfach-Mount werden alle Mountpunkte als Unterordner im Ordner '''Media''' zusammengeführt, obwohl sich die Freigaben auf verschiedenen Servern befinden. Die Mount-Optionen sind jedoch identisch: {{{ Media \ -fstype=cifs,credentials=/home/Simon/.smbcredentials \ "/Eigene Bilder" ://192.168.1.101/Bilder \ "/Monas Bilder" ://192.168.1.102/Bilder \ /Musik ://192.168.1.101/Musik \ /Videos ://192.168.1.113/Videos \ }}} ==Ganzes SMB-Netz== Das folgende Beispiel ist eine für Ubuntu angepasste Vereinfachung des Beispiel-Skripts '''auto.smb'''. {{{#!code bash #!/bin/bash # Dieses Skript muss ausführbar sein (chmod 755)! key="$1" # Hier ggf. die eigene credentials-Datei und weitere # Mount-Optionen eintragen: creds=/home/USER/.smbcredentials if [ -f "$creds" ]; then opts="-fstype=cifs,credentials=$creds" smbopts="-A $creds -gL" else opts="-fstype=cifs,guest" smbopts="-gNL" fi SMBCLIENT="/usr/bin/smbclient" [ -x $SMBCLIENT ] || exit 1 # Wenn smbclient nicht installiert ist, dann geht nichts! $SMBCLIENT $smbopts $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- ' # Die Ausgabe von smbclient wird nun mit AWK aufbereitet BEGIN { ORS=""; first=1 } /Disk/ { if (first) { print opts; first=0 } dir = $2 loc = $2 # Spezielle Zeichen "$" und "&" im Namen escapen gsub(/[&$]/,"\\\\&",loc) print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\"" } END { if (!first) print "\n"; else exit 1 } ' }}} Vom aufrufenden Programm Autofs wird der Server als Parameter an das Skript übergeben. Dieses durchsucht mit dem Befehl `smbclient -gNL` den Server nach Freigaben. Die Ergebnisse werden mit dem Text-Bearbeitungsprogramm AWK aufgearbeitet und so an Autofs zurückgegeben, dass dieses für alle Freigaben Mountpunkte generieren und ggf. die Freigaben mounten kann. Freigaben mit Sonderzeichen (z.B. Umlaute, Klammern, Satzzeichen) im Namen werden dabei ignoriert ([#Sonderzeichen s.u.]). Das Skript kann man z.B. als '''/etc/auto.cifs''' ablegen; der entsprechende Eintrag in '''/etc/auto.master''' könnte dann so lauten: {{{ /media/cifs /etc/auto.cifs --timeout=5 --ghost }}} Um Probleme bei der Namensauflösung zu vermeiden, sollte immer die IP des Servers verwendet werden. == WebDAV == WebDAV-Freigaben lassen sich mit Hilfe des Paketes [http://savannah.nongnu.org/projects/davfs2 davfs2]{en} einbinden. {{{#!vorlage Paketinstallation davfs2 }}} Nähere Informationen zur Konfiguration von und zu davfs2 allgemein finden sich unter [:WebDAV#davfs2:]. Zum Einbinden einer WebDAV-Freigabe eignet sich die folgende Zeile in einer entsprechneden Map-Datei: {{{ [Ordner-Name] -fstype=davfs,uid=[uid],gid=[gid],file_mode=700,dir_mode=700,rw :https\://[Domain][\:[Port]][/Freigabe] }}} Die Zeile bindet die Freigabe im Besitz eines Benutzers (uid) und einer Gruppe (gid) ein und setzt die Rechte aller Dateien und Ordner so dass nur der Besitzer lesen, schreiben und ausführen kann (bei Bedarf anpassen, s. [:chmod:]). Man sollte darauf achten, dass der Adresseintrag der Zeile mit einem Doppelpunkt beginnt und alle weiteren Doppelpunkte in der Adresse beim Protokoll und der Portnummer jeweils mit einem Backslash gepräfixt werden müssen. Hierbei müssen folgende Platzhalter ersetzt werden: {{{#!vorlage Tabelle Platzhalter Beschreibung +++ [Ordner-Name] Name des Ordners im Basisverzeichnis der Map-Datei, in dem die Freigabe gemountet werden soll +++ [uid], [gid] IDs eines Benutzers, der Besitzer sein soll, und einer Gruppe, kann für einen Benutzer mit dem Befehl `id` ermittelt werden +++ [Benutzername] Name des Benutzers, der Besitzer sein soll +++ [Domain] Domain des WebDAV-Servers (z.B. `nas.meine-domain.org`) +++ [\:[Port]] Portnummer des WebDAV-Servers mit vorangehendem Backslash und Doppelpunkt (optional) +++ [/Freigabe] Freigabe-Pfad auf dem Server, der eingebunden werden soll, mit Slashes getrennt (optional) }}} Damit die Zugangsdaten gefunden werden können, werden diese in der globalen Geheimnisse-Datei von davfs2 ('''/etc/davfs2/secrets''') hinterlegt. Hierbei muss für jede Freigabe eine Zeile hinzugefügt werden: {{{ [Pfad zum Freigabe Ordner] [Benutzername auf dem WebDAV-Server] [Passwort des Benutzers] # zum Beispiel: /mnt/paul/Fotos paul theultraverysecretpass }}} Die Geheimnis-Datei gehört standardmäßig den Benutzer `root` und sollte auch nur von diesem lesbar sein (z.B. Modus `700`). =Problembehandlung= ==Mountpunkte sind nicht sichtbar== Weil Autofs die Mountpunkte erst beim ersten Zugriffs-Versuch einrichtet, erscheinen diese nach dem Systemstart zunächst nicht im Dateimanager. Dies ist lästig, denn dann kann der erste Zugriff auch nicht wie gewohnt per Mausklick erfolgen. Möchte man nicht das Einrichten der Mountpunkte vom Terminal[3] aus z.B. mit dem Befehl `ls MOUNTPUNKT` erzwingen, bietet sich folgender Ausweg an: * Man richtet die eingetragenen Mountpunkte für die Server (für die einzelnen Freigaben ist das nicht nötig) __vor__ dem Start von Autofs von Hand ein. Eventuell muss dazu Autofs mit dem Befehl `sudo service autofs stop` angehalten und anschließend mit `sudo service autofs start` neu gestartet werden. ==SMB-Server wird nicht gefunden== Beim [#Ganzes-SMB-Netz Einbinden eines ganzen SMB-Netzes] muss Autofs den Namen bzw. die IP des Servers als Parameter an das Skript übergeben. Dies setzt voraus, dass der entsprechende Mountpunkt schon eingerichtet ist. Nötigenfalls muss man also genau so vorgehen, wie [#Mountpunkte-sind-nicht-sichtbar oben] beschrieben. ==Konstellation: 'Schlafendes' NAS im WLAN== Bei dieser verbreiteten Konstellation kommen zwei Probleme zusammen: Man möchte auf einem Notebook über WLAN eine NAS einbinden, die sich im Schlafmodus befindet. Nach dem Starten des Notebooks möchte man so schnell wie möglich auf das NAS zugreifen können. Negativbeispiele wären z.B. ein Nautilus, der lange braucht, bis er startet, oder Rhythmbox, das ohne ersichtlichen Grund eine Minute lang eine graue Benutzeroberfläche zeigt (bis endlich die Musikdateien auf dem NAS zur Verfügung stehen). Eine Möglichkeit, dies zu erreichen, ist, das NAS zum Aufwachen zu zwingen, sobald das Notebook eine WLAN-Verbindung aufgebaut hat. Zuerst muss sichergestellt sein, dass die WLAN Verbindung aufgebaut wurde. Dazu kann folgendes Autostart-Shell-Skript verwendet werden: {{{#!code bash #!/bin/bash # check if online # PING_URL=www.google.com WAIT_FOR=30 # seconds # trap "exit 1" SIGTERM sleep $WAIT_FOR && kill $$ & while ! ping -c1 $PING_URL 2>/dev/null 1>&2 do sleep 1 done kill %- # programms to start as soon as we are online /home/user/skripts/wakeupnas.sh & # ACHTUNG: dieser Pfad muss angepasst werden! exit 0 }}} Das Skript lässt man nach dem Booten durch [:Autostart:] automatisch starten; es testet 30 Sekunden lang, ob eine WLAN-Verbindung besteht- indem fortwährend `www.google.com` aufgerufen wird. Wenn die Verbindung besteht, können andere Programme oder Skripte aufgerufen werden, die auf eine WLAN-Verbindung angewiesen sind (z.B. Thunderbird). Im o.a. Beispiel wird das Shell-Skript 'wakeupnas.sh' gestartet, um das NAS zu wecken. Im nächsten Schritt sorgt das Shell-Skript '''wakeupnas.sh''' für das Aufwachen und automatische Einbinden des NAS in das Dateisystem: {{{#!code bash #!/bin/bash # fire ls at NAS until auto-mounted # echo 'wake up NAS' until ls /media/nfs/nas/ein_Verzeichnis # ACHTUNG: dieser Pfad muss angepasst werden! do echo 'still waking up NAS' sleep 5 done }}} Das Skript führt solange ein `ls` Kommando auf ein bestehendes Verzeichnis des NAS aus, bis das NAS aufwacht und von autofs eingebunden wird. Wie oben beschrieben, bindet autofs ein Laufwerk erst beim Erstzugriff in das Dateisystem ein. Das `ls` Kommando erledigt diesen Erstzugriff. Der Pfad hinter dem 'ls' Kommando muss durch ein Verzeichnis ersetzt werden, welches es auf dem eigenen NAS tatsächlich gibt. Man kann auch versuchen, das NAS durch ein einziges `ls` Kommando zu wecken (beim Autor war das nie ausreichend; vermutlich weil automount noch nicht bereit ist). ==Sonderzeichen== Autofs kann leider keine Partitionen oder Freigaben einbinden, in deren Namen Sonderzeichen (z.B. Umlaute, Akzente, Klammern, Satzzeichen usw.) vorkommen. Namen von Partitionen und Freigaben sollten deshalb nur aus den Zeichen `A..Z, a..z, -,_` bestehen. Datei- und Ordnernamen innerhalb von Partitionen und Freigaben dürfen jedoch alle Zeichen enthalten, die auch ohne Autofs dafür zulässig sind. ==Abweichender nfs Syntax bei Synology== Einige NAS weichen manchmal von der üblichen Syntax ab und können damit Probleme verursachen. So beinhalten bei Synology die nfs Pfade immer das zugrunde liegende Volume, also z.B.: {{{ 192.168.1.101:/volume1/Ordnername }}} statt {{{ 192.168.1.101:/Ordnername }}} =Links= == intern == * [:USB-Datenträger automatisch einbinden:] * [:fstab:] Die klassische Methode, systemweit statisch zu mounten. * [:systemd:] Der seit Ubuntu 16.04 LTS standardmäßig verwendete Sitzungs-Manager. == extern === * [ubuntu_doc:community/Autofs:] {en} * [http://selflinux.org/selflinux/html/autofs.html] {de} * [http://linux.die.net/man/8/autofs] {en} * [http://linux.die.net/man/8/automount] {en} * [archwiki:Autofs:] {en} * [http://www.am-utils.org/] {en} Homepage des Berkley-Automounters (amd) #tag: Netzwerk, System, Dateisystem