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'"
où /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é.
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
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.
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:
ro
, rw
, nodev
, noexec
comment=x-gvfs-show
,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 udev
MODE="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.