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

Veröffentlicht von

_nico

Mac-User aus Leidenschaft, Blogger seit Oktober 2009, 88er Baujahr, technikaffin. Ich fühle mich aber nicht nur auf Apple'schen Betriebssystemen zu Hause, alles was eine Shell hat, interessiert mich besonders! Ihr findet mich auch auf Twitter und Google+.

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

  1. 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. > 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. Pingback: Nachtrag: Partitionen einbinden | Archblog.de
  4. 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.

Schreibe einen Kommentar

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