
Quiero ir más allá de este excelente.soluciónpor @AB que permite montar automáticamente un FS ext3 extraíble determinado utilizando una udev
regla. Específicamente me gustaría especificar variosopciones de montaje: " nodev,noexec,x-gvfs-show
", preferiblemente dentro de la udev
regla 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 udev
regla 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.sh
incluye:
#!/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-show
utilizada junto con udev
las reglas, cuando el volumen montado debe aparecer Devices
en 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/fstab
entrada, un truco bastante feo dado el hecho de que mantengo una udev
regla 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 MYLABEL
produce el mismo resultado que antes... es decir, las opciones nodev,noexec
parecen 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 udev
regla. 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 -o
utilizará.
Lo malo, definitivamente en mi sistema, x-gvfs-show
no 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 udev
regla significa udisk
montar automáticamente el medio con las opciones predeterminadas.
La udev
etiqueta MODE="0550"
, se podría pensar equivalente a invocar lasolo lectura( ro
) opción de montaje, se ignora. Tenga en cuenta que especificar ro
o rw
no se muestra en Nautilus como era de esperar. Curiosamente, los permisos mostrados por Nautilus permanecen sin cambios, mientras que intentar escribir si ro
está configurado generará un mensaje de advertencia y se le negará el permiso de escritura. Bicho ?
Por último, pero no menos importante,noorganice una /etc/fstab
entrada al mismo tiempo que especifica una udev
regla de montaje para un dispositivo determinado. Eso resultará en un conflicto y un mensaje de error que udisk
competirá con su udev
regla para montar el dispositivo. No es ninguna sorpresa. Sin embargo, el dispositivo seguirá montado (en mi caso, según la udev
regla, no preguntes por qué...) e incluso se podrá acceder a él.
HTH un poco.