Einhängeoptionen für per Udev-Regel eingehängtes Ext3-FS am 14.04.3

Einhängeoptionen für per Udev-Regel eingehängtes Ext3-FS am 14.04.3

Ich möchte über dieses hervorragendeLösungvon @AB, das es erlaubt, ein bestimmtes entfernbares ext3-FS mithilfe einer udevRegel automatisch zu mounten. Insbesondere möchte ich mehrereEinhängeoptionen: " nodev,noexec,x-gvfs-show", vorzugsweise innerhalb der spezifischen udevRegel, 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 udevRegel 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.shumfasst:

#!/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-showdie in Verbindung mit udevRegeln verwendet wird, wenn das gemountete Volume auf Devicesder 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/fstabEintrag hinzugefügt, ein ziemlich hässlicher Hack, wenn man bedenkt, dass ich udevparallel 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 MYLABELführt es zum selben Ergebnis wie zuvor, d. h. Optionen nodev,noexecwerden 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 udevRegel 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, -owird verwendet.

Das Schlechte, definitiv in meinem System, x-gvfs-showfunktioniert 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 udevRegel dazu, dass udiskdas Medium automatisch mit den Standardoptionen gemountet wird.

Das udevTag ist MODE="0550", wie Sie vielleicht denken, gleichbedeutend mit dem Aufruf desschreibgeschützt( ro) Mount-Option wird ignoriert. Beachten Sie, dass die Angabe von rooder rwin Nautilus nicht wie erwartet angezeigt wird. Seltsamerweise bleiben die von Nautilus angezeigten Berechtigungen unverändert, während ein Schreibversuch, wenn rogesetzt ist, zu einer Warnmeldung und einer Schreibberechtigungsverweigerung führt. Fehler?

Nicht zuletzt,nichtarrangieren Sie einen /etc/fstabEintrag, während Sie eine udevMount-Regel für ein bestimmtes Gerät angeben. Das führt zu einem Konflikt und einer Fehlermeldung, da udiskes 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 udevRegel – fragen Sie bitte nicht, warum ...) und kann sogar aufgerufen werden.

HTH ein bisschen.

verwandte Informationen