Arch Linux – USB-Sticks und SD-Karten automatisch mounten und als normaler User sicher entfernen

Ab und an möchte ich ein paar Bilder oder Videos von einem USB-Stick, auf meinem Media-PC mit Arch Linux und XBMC, wiedergeben. Jedoch muss man bei einigen Desktopumgebungen (Bsp.: Openbox) oder bei einer XBMC-Standalone Installation einen USB-Stick vorher händisch über den Terminal mounten. Nach einiger Zeit hat mich das tierisch genervt und es sollte in Zukunft automatisch geschehen.

xbmc usb datentraeger sicher entfernen 600x337 - Arch Linux - USB-Sticks und SD-Karten automatisch mounten und als normaler User sicher entfernen

Voraussetzung

Die Dekstopumgebung oder XBMC-Standalone muss mit ck-launch-session (ConsoleKit) und dbus-launch (DBus) gestartet werden, damit ein normaler User, ohne Root-Rechte, mit einer zusätzlichen PolKit-Regel den Datenträger sicher entfernen kann.

cat /home/username/.xinitrc
# Openbox
sleep 10 # manchmal gibt es Probleme wenn XBMC oder die Desktopumgebung zu schnell startet
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session openbox-session
cat /home/username/.xinitrc
# XBMC-Standalone
sleep 10 # manchmal gibt es Probleme wenn XBMC oder die Desktopumgebung zu schnell startet
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session xbmc-standalone

Desweiteren müssen …

pacman -S dbus polkit udisks

… installiert sein/werden und der D-Bus Dienst muss über die /etc/rc.conf vor dem Starten des XServers gestartet werden.

cat /etc/rc.conf | grep -i ^DAEMONS
DAEMONS=(syslog-ng network crond netfs dbus @sensors @sshd !ntpd alsa lircd wicd avahi-daemon)

HowTo / Tutorial

Zuerst brauchen wir eine Udev-Regel, damit USB-Sticks, SD-Karten, USB-Festplatten, etc. automatisch beim Einstecken verbunden bzw. gemountet werden.

vi /etc/udev/rules.d/30-automount.rules
# vim:enc=utf-8:nu:ai:si:et:ts=4:sw=4:ft=udevrules:
#
# /etc/udev/rules.d/10-my-media-automount.rules
# start at sdb to ignore the system hard drive
KERNEL!="sd[b-z]*", GOTO="my_media_automount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="my_media_automount_end"
# import some useful filesystem info as variables
IMPORT{program}="/sbin/blkid -o udev -p %N"
# get the label if present, otherwise assign one based on device/partition
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# create the dir in /media and symlink it to /mnt
ACTION=="add", RUN+="/bin/mkdir -p '/media/%E{dir_name}'"
# global mount options
ACTION=="add", ENV{mount_options}="relatime"
# filesystem-specific mount options (777/666 dir/file perms for ntfs/vfat) 
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},gid=100,dmask=000,fmask=111,utf8"
# automount ntfs filesystems using ntfs-3g driver
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", RUN+="/bin/mount -t ntfs-3g -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
# automount all other filesystems
ACTION=="add", ENV{ID_FS_TYPE}!="ntfs", RUN+="/bin/mount -t auto -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
# clean up after device removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'", RUN+="/bin/rmdir '/media/%E{dir_name}'"
# exit
LABEL="my_media_automount_end"

Zu Windows-Zeiten habe ich nie Wechseldatenträger sicher entfernt, erst unter Linux und Mac OS X habe ich es gelernt – denn beim nächsten Einstecken des Datenträgers waren auf einmal alle Daten verschwunden. Außerdem ist die Fehlermeldung unter Mac OS X so penetrant, dass man es nach einiger Zeit sowieso macht. 🙄

Das möchte ich dann natürlich auch unter XBMC (Untermenü beim Datenträger) tun, was in der Standardkonfiguration als normaler User nicht möglich ist. Daher erlauben wir nun im PolicyKit (polkit), wie oben bereits erwähnt, dass die Unix-Gruppe storage, mount, mount-system-internal, unmount-others, drive-eject und drive-detach ausführen darf, wobei mount und mount-system-internal, durch die Udev-Regel (automatisches mounten) nicht nötig wäre – nur der Vollständigkeit halber.

mkdir -p /etc/polkit-1/localauthority/50-local.d/
vi /etc/polkit-1/localauthority/50-local.d/30-udisks.pkla
[Drive Permissions]
Identity=unix-group:storage
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.filesystem-mount-system-internal;org.freedesktop.udisks.filesystem-unmount-others;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach
ResultAny=yes
ResultInactive=no
ResultActive=yes

Natürlich muss dann euer User (in diesem Fall: username) in der Gruppe storage sein.

usermod -aG storage username
#adduser username storage

Nach einem Neustart des Media-PCs sollten Datenträger nun automatisch verbunden werden, die der User dann im XBMC auch wieder sicher entfernen kann. Ich hoffe euch hat die HowTo geholfen und einige Probleme gelöst. 😎

Schlusswort

In letzter Zeit komme ich nicht regelmäßig zum Bloggen, das hat aber nicht viel mit dem bekannten Sommerloch zu tun. Der Hauptgrund ist, dass ich mit 2 Kumpels, dem Macher von mindlo.net und einem ehemaligen Klassenkamaraden, an einem neuen Projekt arbeite – es wird für viele Internet-Menschen, vorallem IT’lern, einen Mehrwehrt bieten. Mehr dazu … irgendwann! mrgreen - Arch Linux - USB-Sticks und SD-Karten automatisch mounten und als normaler User sicher entfernen

Quellen:
wiki.archlinux.de – Udev
gambaru.de – PolicyKit und der alltägliche Wahnsinn mit den Rechten

Kommentare

6 Antworten zu „Arch Linux – USB-Sticks und SD-Karten automatisch mounten und als normaler User sicher entfernen“

  1. Avatar von Adiwan
    Adiwan

    Vielen Dank für das kleine How-To.
    In absehbarer Zukunft habe ich geplant einen Media Rechner für meine Eltern zu machen und kann das hier nur sehr gut verwenden.

  2. Avatar von Stuenie
    Stuenie

    > Zu Windows-Zeiten habe ich nie Wechseldatenträger sicher entfernt, erst unter Linux und Mac OS X habe ich es gelernt – denn beim nächsten Einstecken des Datenträgers waren auf einmal alle Daten verschwunden.

    Kann ich so unterschreiben 😀 Erst als Linux-Nutzer habe ich mir das angewöhnt.

  3. Nachtrag: Partitionen einbinden | Archblog.de

    […] hat der Kollege bei loggn.de einen Artikel verfasst, in dem es genau darum geht. Lest […]

  4. Avatar von Keba
    Keba

    Danke für das HowTo, hab einige Sachen kopieren können.

    Kleine Anmerkung: „adduser“ fügt den Nutzer nicht der Gruppe hinzu, dass geht mit „sudo usermod -aG $gruppe $nutzer“.

    Grüße, Keba.

    1. Avatar von _nico

      Danke, hab es angepasst. 🙂

  5. […] über einem Jahr habe ich schon mal einen Artikel über dieses Thema geschrieben, jedoch gibt es seit irgendeinem Update ein Problem beim Mounten von NTFS formatierten […]

Schreibe einen Kommentar zu Arch Linux – USB-Sticks und SD-Karten automatisch mounten und als normaler User sicher entfernen – Version 2 › loggn.de Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert