opciones de montaje para ext3 fs montado con regla udev en 14.04.3

opciones de montaje para ext3 fs montado con regla udev en 14.04.3

Quiero ir más allá de este excelente.soluciónpor @AB que permite montar automáticamente un FS ext3 extraíble determinado utilizando una udevregla. Específicamente me gustaría especificar variosopciones de montaje: " nodev,noexec,x-gvfs-show", preferiblemente dentro de la udevregla específica utilizada para montarlo, ya que se trata de un medio físico muy específico.

Sin ninguna opción especificada, el volumen aumenta de la siguiente manera:

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

Para especificar las opciones de montaje, intenté expandir la udevregla de la solución anterior de modo que:

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

donde /usr/local/sbin/mount_by.shincluye:

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

Lo anterior se rompe silenciosamente ya que las opciones de montaje definidas por la raíz parecen ser rechazadas y el volumen (una tarjeta SD) se monta silenciosamente en /media/MYUSER/MYLABEL.

Qué ocurre ?


Lo que intenté hacer:

Las muchas publicaciones que he visto tratan sobre las dificultades de especificación de opciones de montaje al usar udev(p. ej.1,2,...) siguen sin respuesta.

Unotrata con la opción GVFS x-gvfs-showutilizada junto con udevlas reglas, cuando el volumen montado debe aparecer Devicesen la GUI de Nautilus y el usuario no root debe poder desmontarlo. Para al menos cubrir ese último aspecto, volví a NO especificar la opción de montaje en mis reglas de udev, pero agregué una /etc/fstabentrada, un truco bastante feo dado el hecho de que mantengo una udevregla funcional para el mismo volumen uuid en paralelo. Aún así agregué:

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

El FS está montado pero, aunque aparece según lo previsto en Nautilus, cat /proc/mounts | grep -e MYLABELproduce el mismo resultado que antes... es decir, las opciones nodev,noexecparecen ignorarse alegremente.

No es de extrañar que también aparezca el mensaje de error en la pantalla:

No se puede montar MYLABEL. El dispositivo /dev/mmcblk0p1 ya está montado en `/mnt/MYLABEL'.

¿Alguien pensó algo?

GENEROSIDADIntente proporcionar una respuesta canónica que pueda servir a este OP y a todas las personas interesadas en especificar opciones de montaje mediante una udevregla. Si no es posible, explique por qué y proporcione una solución alternativa viable. Salud.

Respuesta1

La secuencia de comandos

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

debería funcionar perfecto con una regla udev como esta (debes reemplazar el 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"

Debido a que udev-rules se ejecuta como root, se -outilizará.

Lo malo, definitivamente en mi sistema, x-gvfs-showno funciona en la lista de opciones para-o

Respuesta2

No deberías utilizar una regla udev para hacer esto. Por un lado, está en conflicto con los udisks: ambos intentan montar la unidad en diferentes lugares, y nadie sabe cuál gana. Además, cuando haya terminado con la unidad, podrá hacer clic derecho sobre ella en la interfaz gráfica de usuario y expulsarla, pero no podrá hacerlo si la regla udev la montó.

Si desea montarlo con opciones personalizadas o una ubicación personalizada, solo necesita agregar una entrada a /etc/fstab y asegurarse de incluir la opción "usuario", que permite a los usuarios no root montarlo automáticamente con udisks. , y luego podrán desmontarlo.

Respuesta3

Para completar la respuesta de AB y para que conste:

Opciones de montaje poder especificarse dentro de las reglas de udev... bajo ciertas condiciones. Mientras realizaba pruebas, noté que algunas opciones son:

  • aceptado y aplicado: ro, rw, nodev,noexec
  • aceptado e ignorado: comment=x-gvfs-show,
  • no aceptado, ya que infringen la regla udev: mode=0XYZ,x-gvfs-show

En el último caso, romper la udevregla significa udiskmontar automáticamente el medio con las opciones predeterminadas.

La udevetiqueta MODE="0550", se podría pensar equivalente a invocar lasolo lectura( ro) opción de montaje, se ignora. Tenga en cuenta que especificar roo rwno se muestra en Nautilus como era de esperar. Curiosamente, los permisos mostrados por Nautilus permanecen sin cambios, mientras que intentar escribir si roestá configurado generará un mensaje de advertencia y se le negará el permiso de escritura. Bicho ?

Por último, pero no menos importante,noorganice una /etc/fstabentrada al mismo tiempo que especifica una udevregla de montaje para un dispositivo determinado. Eso resultará en un conflicto y un mensaje de error que udiskcompetirá con su udevregla para montar el dispositivo. No es ninguna sorpresa. Sin embargo, el dispositivo seguirá montado (en mi caso, según la udevregla, no preguntes por qué...) e incluso se podrá acceder a él.

HTH un poco.

información relacionada