параметры монтирования для udev-rule смонтированной ext3 fs на 14.04.3

параметры монтирования для udev-rule смонтированной ext3 fs на 14.04.3

Я хочу выйти за рамки этого превосходногорешениеот @AB, который позволяет автоматически монтировать заданную съемную ext3 FS с помощью udevправила. В частности, я хотел бы указать нескольковарианты крепления: " nodev,noexec,x-gvfs-show", желательно в рамках конкретного udevправила, используемого для его монтирования, поскольку он имеет дело с одним вполне конкретным физическим носителем.

Если опция не указана, том монтируется следующим образом:

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

Чтобы указать параметры монтирования, я попытался расширить udevправило из предыдущего решения следующим образом:

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включает в себя:

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

Вышеуказанный код тихо прерывается, поскольку параметры монтирования, определенные пользователем root, по-видимому, отклоняются, и том (SD-карта) молча монтируется в /media/MYUSER/MYLABEL.

В чем дело ?


Что я пытался сделать:

Во многих сообщениях, которые я видел, речь идет о трудностях спецификации опций монтирования при использовании udev(например,1,2,...) остаются без ответа.

Одинимеет дело с опцией GVFS, x-gvfs-showиспользуемой в сочетании с udevправилами, когда смонтированный том должен отображаться Devicesв графическом интерфейсе Nautilus, а пользователь без прав root должен иметь возможность размонтировать его. Чтобы хотя бы охватить этот последний аспект, я вернулся к НЕ указанию опции монтирования в моих правилах udev, но добавил запись /etc/fstab, довольно уродливый хак, учитывая тот факт, что я параллельно сохраняю работающее udevправило для того же тома uuid. Тем не менее, я добавил:

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

FS смонтирован, но хотя он отображается в Nautilus так, как и задумано, cat /proc/mounts | grep -e MYLABELрезультат тот же, что и раньше... т.е. параметры, nodev,noexecпохоже, беззаботно игнорируются.

Неудивительно, что я также получаю сообщение об ошибке на экране:

Невозможно смонтировать MYLABEL. Устройство /dev/mmcblk0p1 уже смонтировано в `/mnt/MYLABEL'.

Есть у кого-нибудь мысли?

НАГРАДАПожалуйста, постарайтесь предоставить канонический ответ, который может послужить этому OP и всем тем людям, которые заинтересованы в указании опций монтирования через udevправило. Если это невозможно, пожалуйста, объясните, почему, и предоставьте жизнеспособный обходной путь. Ура.

решение1

Сценарий

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

Должно отлично работать с таким правилом udev (нужно заменить 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"

Поскольку udev-rules запускается как root, -oбудет использоваться .

Плохо то, что в моей системе определенно x-gvfs-showнет в списке опций-o

решение2

Вам не следует использовать правило udev для этого. Во-первых, это конфликтует с udisks: они оба пытаются смонтировать диск в разных местах, и кто из них победит, остается только гадать. Также, когда вы закончите с диском, вы хотите иметь возможность щелкнуть по нему правой кнопкой мыши в графическом интерфейсе и извлечь его, но вы не можете этого сделать, если правило udev смонтировало его.

Если вы хотите, чтобы он был смонтирован с пользовательскими параметрами или в пользовательском расположении, вам просто нужно добавить для него запись в /etc/fstab и убедиться, что вы включили параметр «user», который позволяет пользователям, не являющимся пользователями root, автоматически монтировать его с помощью udisks, а затем они смогут его размонтировать.

решение3

Чтобы завершить ответ AB и занести его в протокол:

Варианты крепления может быть указан внутри правил udev ... при определенных условиях. Когда я запускал тесты, я заметил, что некоторые параметры:

  • принято и исполнено: ro, rw, nodev,noexec
  • принято и проигнорировано: comment=x-gvfs-show,
  • не принимаются, так как они нарушают правило udev: mode=0XYZ,x-gvfs-show

В последнем случае нарушение udevправила означает udiskавтоматическое монтирование носителя с параметрами по умолчанию.

Тег , вы можете подумать udev, MODE="0550"эквивалентен вызовутолько для чтения( ro) mount-option, игнорируется. Обратите внимание, что указание roor rwне отображается в Nautilus, как можно было бы ожидать. Как ни странно, разрешения, отображаемые Nautilus, остаются неизменными, тогда как попытка записи, если roона установлена, приведет к предупреждающему сообщению и отказу в разрешении на запись. Ошибка ?

Последний, но тем не менее важный,неорганизуйте запись /etc/fstabв то же время, когда вы указываете udevправило монтирования для данного устройства. Это приведет к конфликту и сообщению об ошибке, поскольку udiskбудет конкурировать с вашим udevправилом для монтирования устройства. Ничего удивительного. Устройство все равно будет смонтировано (в моем случае, по правилу udev- пожалуйста, не спрашивайте почему...) и даже может быть доступно.

Немного HTH.

Связанный контент