Autofs ist ein auf dem Programm automount basierendes Werkzeug, um Netzwerkfreigaben bei Zugriff automatisch ins System einzuhängen und nach einer vordefinierten Zeit wieder aus dem System auszuhängen. Autofs greift dabei mithilfe weiterer Programme auf verschiedene Netzwerkprotokolle wie z.b. samba ( MS ), nfs (Linux), sshfs (MS/Linux/Apple), Webdav (Netzverzeichnisse), ftp, uvm zu. Autofs ist unabhängig von der grafischen Benutzeroberfläche, für nahezu alle Linux Systeme sowie Desktopumgebungen nutzbar und die Mountpunkte können frei gewählt werden.
Grundlagen |
Installation |
Konfiguration |
Netzwerkfreigaben | Installation | AUTOFS Deamon einrichten |
Public Key Authentifizierung (sshfs) | Konfigurationsbeispiel | |
Fehlerquellen | ||
User & Gruppen ID für sshfs mounts | ||
Bugreport | ||
———————————————- | ———————————————- | ———————————————- |
Netzwerkfreigaben
Der übliche Weg, Partitionen beim Systemstart automatisch statisch einzubinden, ist ein Eintrag in der Datei /etc/fstab. Die fstab bietet jedoch nicht die dynamischen Funktionen wie autofs (automatisches einhängen bei Öffnen des Verzeichnisses). Besteht noch keine Netzwerkverbindung, wird der Bootvorgang aufgrund eines falschen Eintrags angehalten und das System startet nicht sauber bzw. stoppt den Bootvorgang. Mit Autofs werden die Dateisysteme unabhängig vom Systemstart erst dann eingehängt, wenn auf sie zugegriffen wird und nach einer frei definierbaren Zeit automatisch wieder ausgehängt, wenn kein Zugriff mehr erfolgt.
Es gibt verschiedene Möglichkeiten Verzeichnisse oder Netzwerkfreigaben in das System einzuhängen (mounten)
-
- Einhängen über die /etc/fstab :
Vorteil: keine weiteren Programme nötig.
Nachteil: System unterbricht Startvorgang bei Fehlern - Einhängen über fuse :
Vorteil: verschiedene Module/Standards wie cifs ( samba), nfs (linux), sshfs (linux), webdav ( windows/Linux), ftp, keine root Rechte nötig.
Nachteil: keine Überprüfung/Validierung der Quelle, kein automatisches Ein,- oder Aushängen - Einhängen über sshfs :
Vorteil: Verschlüsselte Datenübertragung, einfache Userverwaltung über Systemuser,
Nachteil: Kein automatisches Ein,- oder Aushängen bei Zugriff auf Ordner - Einhängen über autofs :
Vorteil: Kombination der o.g. Möglichkeiten, bei Betreten des Verzeichnisses wird die Quelle eingehängt, bei Inaktivität wird Quelle wieder ausgehängt, Mountpunkte frei wählbar, mit weiteren Programmen für viele Dienste nutzabar.
- Einhängen über die /etc/fstab :
Public Key Authentifizierung (sshfs)
Das Einhängen mithilfe von sshfs erfordert die Eingabe des Nutzernames und des Passwortes für den Login. Die Public-Key-Authentifizierung bietet hier eine komfortable Möglichkeit die Passwortabfrage mittels eines Schlüsselpaares (dessen Authentifizierung wesentlich sicherer ist, als der Login mit einem Passwort) zu umgehen. Der Login erfolgt jetzt mittels Benutzernahmen und Abgleichung der Schlüssel (bei Erstellung des Schlüsselpaares KEIN Passwort eingeben, da sonst der Schlüssel zusätzlich noch mit einem Passwort gesichert wird, welches bei jeder Verbindung eingegeben werden muss; es wird davon ausgegangen, dass das Konto für den Nutzer auf dem Server bereits erstellt wurde). Mit folgendem Befehl wird ein Schlüsselpaar erzeugt und der öffentliche Schlüssel auf dem Server hinterlegt.
1 |
ssh-keygen && ssh-copy-id <USER>@<TARGET_IP/TARGET_DOMAIN> |
Der Login ist jetzt ohne Passworteingabe über die erstellen Schlüssel möglich. Bei der Nutzung von autofs ohne explizite Angabe der SSH Schlüsseldateien (Parameter IdentityFile=/home/<USER>/.ssh/id_rsa,UserKnownHostsFile=/home/<USER>/.ssh/known_hosts) muss die Public-Key-Authentifizierung mit dem Host/Server als root erfolgen, da der autofs Dienst mit root Rechten gestartet wird und somit die root Pfade für die Public-Key-Authentifizierung gelten (/root/.ssh/…).
Installation
Folgender Befehl installiert autofs, sshfs, curlftpfs und Fuse ( ggf müssen für samba, nfs, oder weitere Freigaben die entsprechenden Programme installiert werden ) :
1 |
sudo apt-get install fuse-emulator-utils autofs sshfs curlftpfs |
AUTOFS Deamon einrichten
- Mountpunkte erstellen
In der /etc/auto.master werden die Verzeichnisse angegeben, in denen autofs die Mountpunkte der entfernten Dateisysteme erstellt. Verzeichnisse/Mountpunkte die bereits innerhalb der in der /etc/auto.master angeben Pfade existieren sind nach dem Starten von autofs nicht mehr zugänglich, da autofs dort via mapper die Mountpunkte neu erstellt. Daher sollte ein Verzeichnis unterhalb von /mnt/ oder /media angelegt werden. - Die /etc/auto.master Datei
In der /etc/auto.master Datei werden die Hauptpfade und globalen Optionen für autofs konfiguriert. Der Aufbau ist wie folgt :
1KEY MAP -OPTIONS
Das erste Feld („KEY“) bezeichnet ein Mountverzeichnis, in dem die einzelnen Mountpunkte beim Einbinden automatisch generiert werden. Im zweiten Feld („MAP“) wird dem betreffenden Mountverzeichnis eine Map-Datei mit den jeweils gültigen Mountoptionen zugeordnet. Im dritten Feld („OPTIONS“) können bei Bedarf noch Optionen angegeben werden, die für alle in der Mapdatei aufgeführten Mountpunkte gelten. Die in den einzelnen Mapdateien angegebenen Namen für die einzelnen Mountpunkte gelten relativ zum in der Mastermapdatei angegebenen Mountverzeichnis.
1/mnt/autofs /etc/auto.misc uid=1000,gid=1000,--timeout=30,--ghost
Die o.g. Zeile in der /etc/auto.master Datei definiert als Hauptverzeichnis /mnt/autofs auf dem lokalen Rechner. Die Logindaten sind in der /etc/auto.misc hinterlegt. Darauf folgen die globalen Optionen die für alle in der /etc/auto.misc definierten Verzeichnisse gelten. Die UID und GID Werte lassen sich mithilfe des Befehls cat /etc/passwd | grep <USER> auslesen. - Die Logindaten in /etc/auto.misc
Nachdem in der /etc/auto.master die lokalen Verzeichnisse und globalen Optionen festgelegt wurden, fehlen jetzt noch die Logindaten für die entfernten Verzeichnisse/Server. Diese werden abhängig von den in der /etc/auto.master definierten Pfaden angelegt. Der grundlegende Aufbau der auto.misc sieht wie folgt aus :
1LOCALDIR -OPTIONS REMOTEDIR/REMOTEDESTINATION
Localdir gibt das von autofs automatisch erstellte Verzeichnis unterhalb des in der /etc/auto.master definierten Pfades an ( /mnt/autofs/LOCALDIR). In dem Feld Options können weitere Optionen angeben werden, die nur für das entsprechende Verzeichnis gelten (nicht global). Unter Remotedir wird der Login angegeben, wobei auf die etwas andere Syntax zu achten ist. Die generelle Syntax für verschiedene Dateisysteme (sshfs, ftp etc.) lautet wie folgt:
1Mountpoint <Optionen externer Programme> :<externes programm>\#<remote user>\:<remote user password>\@<remote host>
1Archiv -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,follow_symlinks,max_read=65536,IdentityFile=/home/<USER>/.ssh/id_rsa,UserKnownHostsFile=/home/<USER>/.ssh/known_hosts :sshfs\#<USER>@<HOST>:/<HOSTDIRECTORY>
Konfigurationsbeispiel:
Remote Dateisystem: sshfs
User auf server: media
User auf Client: myname
Server IP: 192.168.1.100
Server Verzeichnis: /mnt/Archiv_Host
Autofs Hauptverzeichnis: /mnt/autofs
Autofs Mountverzeichnis: /mnt/autofs/Archiv_Client
Public keys aktivieren:
1 |
ssh-keygen && ssh-copy-id media@192.168.1.100: |
Inhalt der /etc/auto.master:
1 |
/mnt/autofs /etc/auto.misc --timeout=30,--ghost |
Inhalt der /etc/auto.misc für sshfs:
1 |
Archiv_Client -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,follow_symlinks,max_read=65536,IdentityFile=/home/myname/.ssh/id_rsa,UserKnownHostsFile=/home/myname/.ssh/known_hosts :sshfs\#media@192.168.1.100:/mnt/Archiv_Host |
Inhalt der /etc/auto.misc für curlftps:
1 |
Archiv_Client -fstype=fuse,allow_other :curlftpfs\#media@192.168.1.100 |
Fehlerquellen :
- Eintrag in der /etc/fuse.conf mit dem Inhalt user_allow_other erstellt?
- Datei /etc/fuse.conf für autofs user lesbar ( autofs user in der Gruppe fuse )?
- Pfade richtig angegeben ( ggf. mit sshfs user@host:dir /mountpoint testen)?
- Fuse Werkzeuge / SSHFS nicht installiert?
- Schreibrechte für autofs user im autofs Hauptverzeichnis gesetzt?
- Rechtevergabe für SSH Publicey Authentifizierung zu strickt oder falsch gesetzt?
User & Gruppen ID für sshfs mounts
Um Dateisysteme mit Hilfe von sshfs unter anderen User und Gruppen IDs ( z.B. für Webserververzeichnisse auf SAS Speichern ) einzubinden, muss die User und Gruppen ID über die Optionen -gid und uid angeben werden:
1 |
sudo sshfs -o gid=<gid>,uid=<uid> server@xxx.xxx.xxx.xx:/folder/to/mount ~/mount/point |
Bugreport : // OBSOLET seit Kernel 4.X tritt das Problem nicht mehr auf
- Aufgrund aktiver Verbindungen können Probleme beim Wechseln in den Standby-Modus auftreten. Deshalb sollte autofs vor dem Wechseln in den STR Modus beendet und nach dem Aufwachen aus dem STR Modus wieder gestartet werden. In dem Verzeichnis /etc/pm/sleep.d/ wird hierzu eine ausführbare Datei 11_autofs mit folgendem Inhalt erstellt:
12345678910111213#!/bin/bashcase $1 insuspend | hibernate)echo "stopping autofs service"sudo service autofs stop;;resume | thaw)echo "starting autofs service"sudo service autofs start;;*) echo "somebody is calling me totally wrong.";;esac - Es kann vorkommen, dass automount nicht richtig beendet wird und der Prozess nicht beendet wird. Nach manuellem Beenden des automount Prozesses funktioniert der STR Modus wieder. Folgendes Script kann dazu verwendet werden.
12345678910111213#!/bin/bashecho -e "\nautofs status : $(sudo service autofs status)\n"# stop autofs servicesudo service autofs stop# force quit if autofs is already runningsudo kill $(sudo service autofs status | cut -d " " -f4) &> /dev/null# force quit automountsudo kill $(cat /var/run/autofs.pid) &> /dev/nullecho -e "\nautofs status : $(sudo service autofs status)\n"
by Speefak