web-dev-qa-db-fra.com

options de montage pour udev-rule monté ext3 fs le14.04.3

Je veux aller au-delà de cet excellent solution by @ A.B. qui permet de monter automatiquement un ext3 FS amovible donné en utilisant une règle udev. Plus précisément, j'aimerais spécifier plusieurs options de montage : "nodev,noexec,x-gvfs-show", de préférence dans la règle udev spécifique utilisée pour le monter, car il s’agit d’un support physique très spécifique.

Sans option spécifiée, le volume monte donc:

$ cat /proc/mounts | grep -e MYLABEL
/dev/mmcblk0p1 /mnt/MYLABEL ext3 rw,relatime,data=ordered 0 0

Pour spécifier les options de montage, j'ai essayé d'étendre la règle udev à partir de la solution précédente de la manière suivante:

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'"

/usr/local/sbin/mount_by.sh comprend:

#!/bin/sh
/bin/mount "/dev/disk/by-uuid/$2" "/mnt/$1" -o "$3"

Ce qui précède tombe en silence, car les options de montage définies par la racine semblent être rejetées et le volume (une carte SD) est monté en mode silencieux sur/media/MYUSER/MYLABEL.

Qu'est-ce qui ne va pas?


Ce que j'ai essayé de faire:

Les nombreux articles que j'ai vus et qui traitaient de difficultés de spécification d'option de montage lors de l'utilisation de udev (par exemple 1 , 2 , ...) restent sans réponse.

One traite de l'option GVFS x-gvfs-show utilisée conjointement avec les règles udev, lorsque le volume monté doit apparaître sous Devices sur l'interface utilisateur graphique de Nautilus et sur l'environnement non racine. l'utilisateur doit pouvoir le démonter. Pour obtenir au moins ce dernier aspect couvert, je suis revenu à NON spécifiant l'option de montage dans mes règles udev, mais j'ai ajouté une entrée /etc/fstab, un bidule plutôt laid étant donné que je garde une règle udev fonctionnelle pour la même chose. volume uuid en parallèle. Pourtant, j'ai ajouté:

UUID=_________ /mnt/MYLABEL ext3 nodev,noexec,x-gvfs-show 0 2

Le FS est monté, mais bien que cela apparaisse comme prévu dans Nautilus, cat /proc/mounts | grep -e MYLABEL donne le même résultat qu'auparavant ... c.-à-d. Les options nodev,noexec semblent être ignorées.

Sans surprise, le message d'erreur apparaît également à l'écran:

Impossible de monter MYLABEL. Le périphérique/dev/mmcblk0p1 est déjà monté sur `/ mnt/MYLABEL '.

Avez-vous déjà pensé à quelque chose?

BOUNTY Essayez de fournir une réponse canonique qui puisse servir cet OP et toutes les personnes intéressées par la spécification des options de montage via un udev règle. Si ce n'est pas possible, veuillez expliquer pourquoi et fournir une solution de contournement viable. À votre santé.

6
Cbhihe

Le scénario

#!/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

devrait fonctionner parfaitement avec une règle udev comme celle-ci (vous devez remplacer l'UUID)

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"

Comme udev-rules s’exécute en tant que root, le -o sera utilisé.

La mauvaise chose, certainement dans mon système, x-gvfs-show ne fonctionne pas dans la liste des options pour -o

2
A.B.

Vous ne devriez pas utiliser une règle udev pour le faire. D'une part, il est en conflit avec les udisks: ils essaient tous les deux de monter le disque dans des endroits différents, et celui qui gagne est à deviner. De plus, lorsque vous avez terminé avec le lecteur, vous voulez pouvoir cliquer dessus avec le bouton droit de la souris et l'éjecter, mais vous ne pouvez pas le faire si la règle udev l'a monté.

Si vous voulez qu'il soit monté avec des options personnalisées ou un emplacement personnalisé, vous devez simplement ajouter une entrée dans/etc/fstab, et assurez-vous d'inclure l'option "utilisateur", qui permet aux utilisateurs non root de le monter automatiquement avec des udisks. et ils peuvent ensuite le démonter.

2
psusi

Pour compléter la réponse de A.B. et pour mémoire:

Options de montage peut être spécifié dans les règles udev ... sous certaines conditions. En effectuant des tests, j'ai remarqué que certaines options sont les suivantes:

  • accepté et appliqué: ro, rw, nodev, noexec
  • accepté et ignoré: comment=x-gvfs-show,
  • pas accepté, car ils enfreignent la règle udev: mode=0XYZ, x-gvfs-show

Dans ce dernier cas, rompre la règle udev signifie que udisk monte automatiquement le support avec les options par défaut.

La balise udevMODE="0550" pourrait vous sembler équivalente à l'appel de la monture en lecture seule (ro) option, est ignoré. Notez que spécifier ro ou rw ne s'affiche pas dans Nautilus comme prévu. Bizarrement, les autorisations affichées par Nautilus restent inchangées, alors que toute tentative d'écriture si ro est définie entraînera un message d'avertissement et un refus d'autorisation d'écriture. Punaise ?

Dernier point mais non le moindre, ne pas organiser une entrée /etc/fstab en même temps que vous spécifiez une règle de montage udev pour un périphérique donné. Cela entraînera un conflit et un message d'erreur tel que udisk entrera en concurrence avec votre règle udev pour monter le périphérique. Pas de surprise à cet égard. Cependant, le périphérique sera toujours monté (dans mon cas, selon la règle udev - ne demandez pas pourquoi ...) et peut même être consulté.

HTH un peu.

1
Cbhihe