opções de montagem para ext3 fs on14.04.3 montado na regra do udev

opções de montagem para ext3 fs on14.04.3 montado na regra do udev

Quero ir além deste excelentesoluçãopor @AB que permite montar automaticamente um determinado FS ext3 removível usando uma udevregra. Especificamente, gostaria de especificar váriosopções de montagem: " nodev,noexec,x-gvfs-show", preferencialmente dentro da udevregra específica utilizada para montá-lo, pois trata-se de um meio físico muito específico.

Sem nenhuma opção especificada, o volume é montado assim:

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

Para especificar opções de montagem, tentei expandir a udevregra da solução anterior para:

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

onde /usr/local/sbin/mount_by.shinclui:

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

O acima é interrompido silenciosamente, pois as opções de montagem definidas pela raiz parecem ser rejeitadas e o volume (um cartão SD) é montado silenciosamente em /media/MYUSER/MYLABEL.

O que está errado ?


O que tentei fazer:

Os muitos posts que vi tratando de dificuldades de especificação de opções de montagem ao usar udev(por exemplo1,2,...) permanecem sem resposta.

Umtrata da opção GVFS x-gvfs-showusada em conjunto com udevregras, quando o volume montado deve aparecer Devicesna GUI do Nautilus e o usuário não root deve ser capaz de desmontá-lo. Para pelo menos cobrir esse último aspecto, voltei a NÃO especificar a opção de montagem em minhas regras do udev, mas adicionei uma /etc/fstabentrada, um hack bastante feio, dado o fato de que mantenho uma udevregra de funcionamento para o mesmo volume uuid em paralelo. Ainda assim, acrescentei:

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

O FS está montado, mas embora apareça como pretendido no Nautilus, cat /proc/mounts | grep -e MYLABELproduz o mesmo resultado de antes... ou seja, as opções nodev,noexecparecem ser alegremente ignoradas.

Não é de surpreender que também receba a mensagem de erro na tela:

Não foi possível montar MYLABEL. O dispositivo /dev/mmcblk0p1 já está montado em `/mnt/MYLABEL'.

Alguém pensou?

RECOMPENSAPor favor, tente fornecer uma resposta canônica que possa servir a este OP e a todas as pessoas interessadas em especificar opções de montagem por meio de uma udevregra. Se não for possível, explique o porquê e forneça uma solução alternativa viável. Saúde.

Responder1

O roteiro

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

deve funcionar perfeitamente com uma regra do udev como esta (você precisa substituir o 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"

Como as regras do udev são executadas como root, o -oserá usado.

O ruim, definitivamente no meu sistema, x-gvfs-shownão funciona na lista de opções para-o

Responder2

Você não deveria usar uma regra do udev para fazer isso. Por um lado, está em conflito com os udisks: ambos estão tentando montar a unidade em lugares diferentes, e ninguém sabe qual deles vence. Além disso, quando terminar de usar a unidade, você poderá clicar com o botão direito nela na GUI e ejetá-la, mas não poderá fazer isso se a regra do udev a montar.

Se você quiser montá-lo com opções personalizadas ou em um local personalizado, você só precisa adicionar uma entrada em /etc/fstab para ele e certificar-se de incluir a opção "usuário", que permite que usuários não root montem-no automaticamente com udisks e, posteriormente, eles poderão desmontá-lo.

Responder3

Para completar a resposta de AB e para registro:

Opções de montagem pode ser especificado dentro das regras do udev ... sob certas condições. Ao executar os testes, percebi que algumas opções são:

  • aceito e aplicado: ro, rw, nodev,noexec
  • aceito e ignorado: comment=x-gvfs-show,
  • não aceito, pois viola a regra do udev: mode=0XYZ,x-gvfs-show

Neste último caso, quebrar a udevregra significa udiskmontar automaticamente a mídia com opções padrão.

A udevtag MODE="0550", você poderia pensar equivalente a invocar osomente leitura( ro) opção de montagem, é ignorada. Observe que especificar roor rwnão aparece no Nautilus como seria de esperar. Estranhamente, as permissões exibidas pelo Nautilus permanecem inalteradas, enquanto a tentativa de escrever if rois set resultará em uma mensagem de aviso e na negação da permissão de gravação. Erro ?

Por último, mas não menos importante,nãoorganize uma /etc/fstabentrada ao mesmo tempo em que especifica uma udevregra de montagem para um determinado dispositivo. Isso resultará em um conflito e uma mensagem de erro, pois udiskcompetirá com sua udevregra para montar o dispositivo. Nenhuma surpresa nisso. O dispositivo ainda estará montado (no meu caso, pela udevregra - por favor, não pergunte por quê...) e poderá até ser acessado.

HTH um pouco.

informação relacionada