
Ich möchte über dieses hervorragendeLösungvon @AB, das es erlaubt, ein bestimmtes entfernbares ext3-FS mithilfe einer udev
Regel automatisch zu mounten. Insbesondere möchte ich mehrereEinhängeoptionen: " nodev,noexec,x-gvfs-show
", vorzugsweise innerhalb der spezifischen udev
Regel, die zum Einbinden verwendet wurde, da es sich um ein sehr spezifisches physisches Medium handelt.
Wenn keine Option angegeben wird, wird das Volume folgendermaßen bereitgestellt:
$ cat /proc/mounts | grep -e MYLABEL
/dev/mmcblk0p1 /mnt/MYLABEL ext3 rw,relatime,data=ordered 0 0
Um Mount-Optionen anzugeben, habe ich versucht, die udev
Regel aus der vorherigen Lösung wie folgt zu erweitern:
KERNEL=="mmc*", ENV{ID_FS_UUID}=="______", RUN+="/usr/local/sbin/mount_by.sh '%E{ID_FS_LABEL}' '%E{ID_FS_UUID}' 'nodev,noexec,x-gvfs-show'"
wo /usr/local/sbin/mount_by.sh
umfasst:
#!/bin/sh
/bin/mount "/dev/disk/by-uuid/$2" "/mnt/$1" -o "$3"
Das Obige bricht unbemerkt ab, da die vom Root definierten Einbindungsoptionen scheinbar abgelehnt werden und das Volume (eine SD-Karte) unbemerkt unter /media/MYUSER/MYLABEL eingebunden wird.
Was ist falsch ?
Was ich versucht habe:
Die vielen Beiträge, die ich gesehen habe, befassen sich mit Mount-Option(en) Spezifikation Schwierigkeiten bei der Verwendung udev
(zB1,2,...) bleiben unbeantwortet.
Einsbefasst sich mit der GVFS-Option, x-gvfs-show
die in Verbindung mit udev
Regeln verwendet wird, wenn das gemountete Volume auf Devices
der Nautilus-GUI erscheinen muss und der Nicht-Root-Benutzer es unmounten können muss. Um zumindest diesen letzten Aspekt abzudecken, bin ich dazu übergegangen, in meinen Udev-Regeln KEINE Mount-Option anzugeben, habe aber einen /etc/fstab
Eintrag hinzugefügt, ein ziemlich hässlicher Hack, wenn man bedenkt, dass ich udev
parallel eine funktionierende Regel für dasselbe UUID-Volume behalte. Trotzdem habe ich hinzugefügt:
UUID=_________ /mnt/MYLABEL ext3 nodev,noexec,x-gvfs-show 0 2
Das FS wird gemountet, aber obwohl es in Nautilus wie vorgesehen angezeigt wird, cat /proc/mounts | grep -e MYLABEL
führt es zum selben Ergebnis wie zuvor, d. h. Optionen nodev,noexec
werden scheinbar munter ignoriert.
Wenig überraschend erhalte ich auch die folgende Fehlermeldung auf dem Bildschirm:
MYLABEL kann nicht gemountet werden. Gerät /dev/mmcblk0p1 ist bereits unter „/mnt/MYLABEL“ gemountet.
Hat irgendjemand eine Idee?
KOPFGELDBitte versuchen Sie, eine kanonische Antwort bereitzustellen, die diesem OP und allen Personen, die daran interessiert sind, Mount-Optionen über eine udev
Regel anzugeben, dienen kann. Wenn dies nicht möglich ist, erklären Sie bitte, warum, und bieten Sie eine praktikable Problemumgehung an. Prost.
Antwort1
Das Drehbuch
#!/bin/sh
export mount_point="/mnt/$1"
existing_device=$(awk '$2 == ENVIRON["mount_point"] {print $1; exit}' < /proc/mounts)
if [ -n "$existing_device" ]; then
exit 1
fi
mkdir -p "$mount_point"
sleep 1 # Perhaps not necessary, but in the test with the OP it was necessary
mount "/dev/disk/by-uuid/$2" "$mount_point" -o "$3"
exit 0
sollte mit einer Udev-Regel wie dieser perfekt funktionieren (Sie müssen die UUID ersetzen)
KERNEL=="mmc*", ENV{ID_FS_UUID}=="13ededb9-41e9-4674-b9dc-40ce178af91d", RUN+="/usr/local/bin/mount_by '%E{ID_PART_ENTRY_NAME}' '%E{ID_FS_UUID}' nodev,noexec"
Da die Udev-Regeln als ausgeführt werden root
, -o
wird verwendet.
Das Schlechte, definitiv in meinem System, x-gvfs-show
funktioniert nicht in der Optionsliste für-o
Antwort2
Sie sollten hierfür keine Udev-Regel verwenden. Zum einen steht es im Konflikt mit Udisks: Beide versuchen, das Laufwerk an unterschiedlichen Stellen zu mounten, und wer gewinnt, ist reine Spekulation. Wenn Sie mit dem Laufwerk fertig sind, möchten Sie außerdem in der GUI mit der rechten Maustaste darauf klicken und es auswerfen können, aber das geht nicht, wenn es durch die Udev-Regel gemountet wurde.
Wenn Sie es mit benutzerdefinierten Optionen oder an einem benutzerdefinierten Speicherort mounten möchten, müssen Sie nur einen Eintrag zu /etc/fstab hinzufügen und sicherstellen, dass Sie die Option „user“ einschließen, die es Nicht-Root-Benutzern ermöglicht, es automatisch mit udisks zu mounten und es später unmounten zu können.
Antwort3
Um die Antwort von AB zu vervollständigen und fürs Protokoll:
Einhängeoptionen dürfen kann in Udev-Regeln angegeben werden ... unter bestimmten Bedingungen. Beim Durchführen von Tests fiel mir auf, dass einige Optionen sind:
- akzeptiert und durchgesetzt:
ro
,rw
,nodev
,noexec
- akzeptiert und ignoriert:
comment=x-gvfs-show
, - nicht akzeptiert, da sie die udev-Regel verletzen:
mode=0XYZ
,x-gvfs-show
Im letzteren Fall führt ein Verstoß gegen die udev
Regel dazu, dass udisk
das Medium automatisch mit den Standardoptionen gemountet wird.
Das udev
Tag ist MODE="0550"
, wie Sie vielleicht denken, gleichbedeutend mit dem Aufruf desschreibgeschützt( ro
) Mount-Option wird ignoriert. Beachten Sie, dass die Angabe von ro
oder rw
in Nautilus nicht wie erwartet angezeigt wird. Seltsamerweise bleiben die von Nautilus angezeigten Berechtigungen unverändert, während ein Schreibversuch, wenn ro
gesetzt ist, zu einer Warnmeldung und einer Schreibberechtigungsverweigerung führt. Fehler?
Nicht zuletzt,nichtarrangieren Sie einen /etc/fstab
Eintrag, während Sie eine udev
Mount-Regel für ein bestimmtes Gerät angeben. Das führt zu einem Konflikt und einer Fehlermeldung, da udisk
es mit Ihrer Regel um das Mounten des Geräts konkurriert udev
. Das ist keine Überraschung. Das Gerät wird jedoch trotzdem gemountet (in meinem Fall durch die udev
Regel – fragen Sie bitte nicht, warum ...) und kann sogar aufgerufen werden.
HTH ein bisschen.