Automount mit benutzerdefinierten Rechten

Wenn man eine externe Festplatte ansteckt, kommt es häufig vor, dass diese automatisch gemounted wird und Rechte gesetzt bekommt, die die sinnvolle Arbeit damit behindern. Um dies zum umgehen, sind ein paar kleine Eingriffe in das System nötig:

UDev-Eintrag selbst definieren

UDev sorgt für die Behandlung von Hotplugging-Events. Dazu arbeitet es die Regeln ab, die in /etc/udev/rules.d/ definiert sind. Dort fügen wir nun unsere eigene Regel ganz zu Beginn der Kette ein, um unsere Platte extra zu behandeln.

Zuerst müssen wir dazu herausfinden, wie wir die Platte erkennen können. Dazu stecken wir die Platte an und führen den Befehl lsusb -v als Root (wichtig!) aus. In der Ausgabe suchen wir nach unserer Platte und dort nach dem Eintrag iSerial. Ist dieser nicht vorhanden, müssen wir stattdessen mit iVendor oder anderen Erkennungskriterien arbeiten. Der Einfachheit halber nehme ich an, dass iSerial existiert.

Jetzt erstellen wir eine Datei /etc/udev/rules.d/01-usb-custom.rules und schreiben in diese folgendes rein:

BUS=="usb", KERNEL="sd?1", SYSFS{serial}="01234", SYMLINK+="exthdd", RUN+="/usr/local/bin/automount-exthdd.sh"

Zur Erklärung:

  • Es ist ein USB-Gerät, daher ist BUS auf „usb“ gesetzt.
  • Der Kernel legt normalerweise ein Device sdb oder ähnlich an. Wir wollen also sd*1 abfangen und umbiegen.
  • Jetzt folgt die Idenfitikation des Geräts durch die Seriennummer. Hier natürlich den Wert eintragen, den wir zuvor rausgesucht haben.
  • Als nächstes definieren wir einen Namen für die Device-Datei, die erzeugt werden soll.
  • Und zuletzt lassen wir ein Script aufrufen, damit auch wirklich automatisch gemountet wird.

Mount-Eintrag erstellen

Jetzt müssen wir in /etc/fstab eine Regel definieren, die festlegt wie unser Gerät /dev/exthdd gemountet wird. Zuerst erstellen wir ein Verzeichnis /media/exthdd (oder /mnt/exthdd) und dann fügen wir in /etc/fstab diese Zeile hinzu:

/dev/exthdd    /media/exthdd   vfat   user,auto,uid=1000,gid=1000,iocharset=utf8   0   0

So oder ähnlich. Hier muss natürlich der korrekte Dateisystem-Typ eingetragen werden (vfat) und die Optionen entsprechend sinnvoll gewählt werden. Man sollte hier schon wissen, was man tut. :) Details dazu finden sich aber in jedem Mount-Tutorial.

Automount-Skript

Tja. Und zuletzt müssen wir noch das Script schreiben, das wir in unserer UDev-Regel automatisch aufrufen lassen. Wir erstellen also die Datei /usr/local/bin/automount-exthdd.sh und schreiben hinein:

#!/bin/sh
mount /media/exthdd

Jetzt nur noch mit chmod +x /usr/bin/local/automount-exthdd.sh das Script ausführbar machen und schon ist alles fertig.

Wenn jetzt die Platte angesteckt wird, sollte sich in /dev die Datei exthdd finden und diese sollte in /media/exthdd eingehängt werden (mit mount überprüfen!).