USB Automount ohne HAL ====================== .. |date| date:: .. sidebar:: Info .. image:: ../images/logo-freebsd.png Dieser Artikel beschreibt das Einrichten von `sysutils/automounter `__, um damit externe Datenträger automatisch zu mounten. über Automounter ---------------- Automounter ist ein Shell-Skript, das GEOM Labels verwendet, um den AutoMounter Daemon **amd(8)** dynamisch zu konfigurieren und die nötigen Symlinks einzurichten. AMD bietet die Möglichkeit über einen Symlink einen Mount anzustoßen, aber die Einrichtung ist recht kompliziert und es ist notwendig, für jeden Datenträger einen recht kryptischen Eintrag in der Datei ``/etc/amd.map`` zu machen und Verzeichnisse zum Mounten und Symlinks für AMD anzulegen. Automounter erspart diese Arbeit, in dem eine ``amd.map`` dynamisch erzeugt wird. Die nötigen Verzeichnisse und Links werden auch automatisch mit angelegt. Letzteres normalerweise im Verzeichnis ``/media``, wer jedoch HAL und Automounter parallel verwenden will, sollte dies anpassen. Vor- und Nachteile gegenüber HAL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AMD und damit Automounter funktionieren unabhängig von einem Desktop Environment, sogar komplett ohne grafische Oberfläche. Es erspart auch das manuelle Unmounten. Es erspart jedoch nicht zu prüfen, ob ein externer Datenträger noch gemountet ist bevor er entfernt wird. Das Risiko eines Datenverlustes besteht weiterhin. Wer Automounter eine Weile benutzt hat, gewöhnt sich aber recht bald daran, alle Zugriffe auf solche Geräte bei Nicht-Bedarf sofort zu beenden. Damit fällt auch das Risiko, ein gemountetes Laufwerk zu entfernen. Der große Vorteil von Automounter ist auch der größte Nachteil. Die fehlende Anbindung an eine grafische Oberfläche. Dadurch fehlt jegliches visuelle Feedback, ob ein Datenträger gerade verwendet wird. Die einzige Möglichkeit das zu überprüfen ist, mit den Kommandos ``mount``,\ ``automounter list mounted``, ``automounter mlist mounted`` oder einem Monitoring-Programm, das die eingebundenen Datenträger anzeigt. Einrichtung ----------- Die grundsätzliche Einrichtung ist zunächst recht einfach. Jedoch gibt es zahlreiche Möglichkeiten Automounter an die eigenen Bedürfnisse anzupassen. grundlegende Einrichtung ~~~~~~~~~~~~~~~~~~~~~~~~ Nach erfolgter Installation muss erst einmal in die Datei ``/etc/rc.conf`` die Zeile: :: automounter_enable="YES" eingetragen werden. Frühere Versionen dieses Artikels haben empfohlen Einträge in der Datei ``/etc/devd.conf`` vorzunehmen. Das ist seit automounter-1.4.1 nicht mehr erforderlich und vorhandene Einträge sollten entfernt werden. Automounter ohne Neustart starten ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |Ausgabe von "automounter list", vor und nach dem Einstecken eines USB-Stick.| Nachdem die grundlegende Einrichtung vorgenommen wurde, kann Automounter mit folgendem Befehl aktiviert werden: :: # /etc/rc.d/devd restart # /usr/local/etc/rc.d/automounter start Benutzerzugriff auf FAT-Dateisysteme ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Da FAT-Dateisysteme (msdosfs) keine Benutzerverwaltung unterstützen, übernehmen sie die Zugriffsrechte des Mountpunkt. Automounter wiederum erzeugt den Mountpunkt mit den Rechten des Devices welches gemountet wird. Um also Zuriffsrechte zu gewähren müssen die Zugriffsrechte auf das entsprechende Device geändert werden. Wie Zugriffsrechte für Devices gesetzt werden ist im Artikel `Mounten als Benutzer `__ beschrieben. Mit folgendem Eintrag in der Datei ``/etc/devfs.rules`` erlangen alle Benutzer, die Mitglieder der Gruppe **operator** sind, die vollen Zugriffsrechte auf FAT-Dateisysteme. :: add path 'msdosfs/*' mode 0660 group operator Nicht vergessen nach der Änderung den Befehl: :: # /etc/rc.d/devfs restart auszuführen. Mount-Optionen festlegen ~~~~~~~~~~~~~~~~~~~~~~~~ Die Standard-Mount-Optionen sind ``rw,noatime,noexec``. Mit ``mount_options`` können diese in der Konfigurationsdatei verändert werden. Es können aber auch Optionen spezifisch für bestimmte Dateisystemtypen angegeben werden. Um Beispielsweise FAT-Partitionen als UTF-8 codiert zu behandeln genügt folgende Zeile in der ``automounter.conf``: :: msdosfs_options=$mount_options,-L=en_GB.UTF-8 Ist die Datei noch nicht vorhanden, sollte sie unter ``/usr/local/etc`` angelegt werden. Dort findet sich auch eine ``automounter.conf.sample`` mit Beispielen. Die NTFS-Unterstützung von FreeBSD sollte besser nur lesend verwendet werden. Der Schreibzugriff funktioniert nur extrem eingeschränkt und ist nicht besonders vertrauenswürdig. Deshalb empfiehlt es sich NTFS-Laufwerke nur lesend zu verwenden: :: ntfs_options=ro Fusefs-NTFS (ntfs-3g) verwenden ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Wer auch schreibend auf NTFS-Dateisysteme zugreifen will ist auf die User-Mode Implementierung `sysutils/fusefs-ntfs `__ angewiesen. User-Mode Dateisysteme haben signifikante Nachteile. Da es jedoch keine Alternative gibt bietet Automounter einen Hack mit dem diese *ein wenig* umschifft werden können. Dieser Hack wird mit folgendem Eintrag in der ``automounter.conf`` aktiviert: :: evil_fuse=1 Ohne diesen Hack würden alle paar Sekunden auf Fuse-basierten Mounts alle geöffneten Dateien geschlossen werden. Damit geht auch ein ``cd`` in ein Verzeichnis verloren. Der Hack hat allerdings auch den Nachteil, dass Fuse-basierte Mounts *alle* gemountet bleiben, bis keiner mehr verwendet wird. Erst dann kommt es zum Unmount. Ohne ist Fusefs in Verbindung mit amd und damit Automounter jedoch einfach nicht sinnvoll verwendbar. Je nach FreeBSD-Version unterscheidet sich die Einbindung von ``fusefs`` in ``automounter``. Bis 7.1-Release, RELENG_7 vor dem 24.03.2009 und RELENG_8 vor dem 05.03.2009 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Um Fusefs einzusetzen genügt in der ``automounter.conf`` die folgende Zeile: :: ntfs=ntfs-3g Es empfehlen sich auch etwas andere Optionen beim Mounten: :: ntfs_options=rw,noatime,sync_unmount,gid=5,umask=113,dmask=002,locale=en_GB.UTF-8 Die Optionen ``gid=5``, ``umask=113`` und ``dmask=002`` sorgen dafür, dass nur Mitglieder der Gruppe Operator Schreibzugriff erhalten. Wenn das nicht erwünscht ist können die Optionen weggelassen werden. Mit ``noatime`` werden unnötige Schreibzugriffe verhindert und mit ``locale`` wird die Kodierung von Dateinamen festgelegt. Da sollte natürlich die Kodierung der Wahl angegeben werden. Eigentlich verwendet NTFS-3g die Locale des Environments, aber beim Booten steht diese immer auf C, deshalb sollte die gewünschte Locale fest eingetragen werden. Die ``sync_unmount`` Option stellt sicher, dass ein unmount erst dann terminiert, wenn alle Daten auf den Datenträger zurückgeschrieben sind. Neure Systeme ^^^^^^^^^^^^^ Um Fusefs einzusetzen müssen in der ``automounter.conf`` die Standardoptionen für ``ntfs`` überschrieben werden. :: ntfs_options=rw,noatime,mountprog=/usr/local/bin/ntfs-3g,sync_unmount,gid=5,umask=113,dmask=002,locale=en_GB.UTF-8 Die Optionen ``gid=5``, ``umask=113`` und ``dmask=002`` sorgen dafür, dass nur Mitglieder der Gruppe Operator Schreibzugriff erhalten. Wenn das nicht erwünscht ist können die Optionen weggelassen werden. Mit ``noatime`` werden unnötige Schreibzugriffe verhindert und mit ``locale`` wird die Kodierung von Dateinamen festgelegt. Da sollte natürlich die Kodierung der Wahl angegeben werden. Eigentlich verwendet NTFS-3g die Locale des Environments, aber beim Booten steht diese immer auf C, deshalb sollte die gewünschte Locale fest eingetragen werden. Die ``sync_unmount`` Option stellt sicher, dass ein Unmount erst dann terminiert, wenn alle Daten auf den Datenträger zurückgeschrieben sind. Blacklisting ~~~~~~~~~~~~ Blacklisting bedeutet eine Liste von Dingen zu führen, die ausgeschlossen werden. Im Falle von Automounter können Shell-Patterns verwendet werden um bestimmte Devices oder Labels auszuschließen. Wer seine Systempartition zum Beispiel mit einer eindeutigen Zahl kennzeichnet, kann sie recht einfach von der Behandlung durch Automounter ausschließen: :: blacklist_nodes="ufs/2*" Wer noch ein parallel installiertes Windows hat und das gleiche mit den dortigen Partitionen getan hat, kann diese auch noch gleich ausschließen: :: blacklist_nodes="ufs/2*,ntfs/2*" Natürlich kann gleich ``ntfs/*`` ausgeschlossen werden, wenn die Risiken im Umgang mit NTFS als zu hoch erscheinen. Es kann aber auch direkt an den Devices Blacklisting vorgenommen werden. Das ist vor allem deshalb nützlich, weil beim Booten zwar Labels von optischen Datenträgern erzeugt werden, diese aber keinerlei Aktualisierung erfahren, wenn der Datenträger später entfernt oder ausgetauscht wird. :: blacklist_devs="acd*" Schließt optische Laufwerke kategorisch aus. Dateisysteme labeln ------------------- Der Umgang mit Datenträgern wird deutlich angenehmer, wenn die darauf befindlichen Dateisystem gelabelt sind. Für UFS kann beim Anlegen mit ``newfs`` der Parameter ``-L