Как создать правило udev для подключения только USB-накопителя?

Я пытаюсь установить конкретный USB-накопитель, чтобы всегда устанавливать только чтение. Если я подключу его, он рассматривается как sdb с одним разделом, sdb1 . Вот некоторые соответствующие строки udevadm (не весь вывод, конечно):

 $ udevadm info -a -n /dev/sdb1 looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/host21/target21:0:0/21:0:0:0/block/sdb/sdb1': KERNEL=="sdb1" SUBSYSTEM=="block" DRIVER=="" ATTR{ro}=="0" ATTR{size}=="976768002" ATTR{stat}==" 473 30586 33938 3460 5 0 40 1624 0 2268 5084" ATTR{partition}=="1" 

Хорошо, поэтому я написал следующее правило udev и сохранил его как /etc/udev/rules.d/10-usbdisk.rules :

 SUBSYSTEM=="block", ATTR{size}=="976768002", MODE="0555" 

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

 $ udevadm test $(udevadm info -q path -n /dev/sdb1) 2>&1 [...] read rules file: /etc/udev/rules.d/10-usbdisk.rules [...] MODE 0555 /etc/udev/rules.d/10-usbdisk.rules:4 

Итак, похоже, что правило должно применяться, и похоже, что MODE="0555" является правильным синтаксисом. Однако, когда я фактически подключаю диск, я могу с удовольствием создавать / удалять файлы на нем.

ОС: тестирование Debian (LMDE)

Итак, что я делаю неправильно? Как смонтировать конкретный USB-накопитель в режиме чтения только автоматически, используя udev 1 ?

1 Я знаю, как это сделать с помощью fstab, но настройки fstab игнорируются gvfs. Моя цель состоит в том, чтобы это автоматически устанавливалось как прочитанное только в графическом интерфейсе. Предположительно, это должно быть сделано через udev или gvfs каким-то образом.

3 Solutions collect form web for “Как создать правило udev для подключения только USB-накопителя?”

Хорошо, резюме состоит в том, что Nautilus использует GVFS, и вам нужно сказать udev использовать GVFS при чтении записей fstab, вы можете сделать это, используя:

 /dev/block-device /mount/point auto x-gvfs-show,ro 0 0 

x-gvfs-show покажет udev и всем, кто хочет использовать помощник GVFS для монтирования файловой системы, поэтому gvfs имеет все элементы управления, umounting, moving mount points и т. д.


Давайте посмотрим, понимаем ли мы, как диски, установленные в современных Linux-системах, с графическим интерфейсом (в частности, Nautilus):

Nautilus использует GVFS в качестве backend для монтирования FTP, SMB, блокирующих устройств, среди прочего, в файловую систему. Инструмент, который GNOME, предназначенный для таких предложений, называется так называемым диском, является тем, который изменяет поведение GVFS. Теперь вот весело.

Nautilus игнорирует все, что не было смонтировано с помощью GVFS (например, с использованием fstab), и дает вам очень элементарный контроль над этим с помощью udev (Nautilus не просит GVFS размонтировать или смонтировать устройства, которые не управляются с помощью GVFS, включая udev, fstab, mount и любой другой blob), например, просто размонтировать и монтировать. Используя разрешения и параметры, хранящиеся в fstab / udev, вы можете использовать эти файловые системы соответственно, но вы не можете изменять поведение с помощью GVFS. Если что-то было смонтировано с использованием sudo mount -o rw /dev/sda3 , sudo mount -o rw /dev/sda3 сообщает udev, что у него нет прав на изменение точки монтирования, поэтому он передает ответственность udev, который в свою очередь просит polkit для разрешений. Если вы использовали GVFS, сам nautilus отключил устройство без разрешений, а также диалогов и т. Д.

Я думаю, что проблема – SUBSYSTEM , вы должны изменить ее на usb вместо block . Я добавляю эту строку в свое правило, и это работает для меня:

 SUBSYSTEMS="usb", ENV{ID_FS_USAGE}=="filesystem", ENV{UDISKS_MOUNT_OPTIONS}="ro" 

Вы можете сделать блочное устройство только для чтения с помощью

 blockdev --setro /dev/sdb1 

Вы можете сделать udev выполнить эту команду (IIRC RUN= ).

  • управление питанием жестких дисков с USB-накопителем
  • Мультизагрузочный USB с дополнительным первым разделом
  • Сделайте загрузочный USB из ISO
  • Есть ли надежный способ кэширования содержимого usb на локальном hd?
  • Могу ли я сделать порт USB на моем компьютере Linux похожим на запоминающее устройство большой емкости?
  • Как установить openSUSE 12.1 с внешнего жесткого диска?
  • Как скопировать очень большой видеофайл с ошибкой в ​​нем?
  • Что означает этот ключевой код?
  • USB-флеш-накопитель с жестко закодированным разделом
  • Загрузка Linux с USB-накопителя
  • Ошибка буфера ввода-вывода на устройстве - SSD в внешнем корпусе SATA3, подключенном через USB3
  • USB 3 Флэш-диск, обнаруженный как USB 2.10
  • Interesting Posts

    Как разделить окно tmux на третьи?

    Почему root должен запускать неограниченные команды как сам по doas?

    Как я могу четко отображать изображение в xterm

    Прокладывайте все через VPN, за исключением SSH на порте 22

    Каковы подсистемы пользовательского интерфейса, их компоненты и обязанности?

    разрешение разрешения автоопределения xrandr clone

    Escape закрывает круглые скобки из URL с помощью firefox -remote

    Испытание, если целые ряды строго возрастают

    Примечание и определение с помощью Vi: при запуске выделите теги и теги отображения в окне предварительного просмотра

    Как зашифровать Linux (Debian 8) после установки и каковы последствия?

    git не использует глобальный файл конфигурации или открытый ключ

    запуск команды до того, как shtudown, похоже, не работает

    Как распечатать общее количество файловых дескрипторов с индексом 24

    Архитектура менеджера пакетов Linux

    Отображение ключа AltGr с помощью KDE On Ubuntu

    Linux и Unix - лучшая ОС в мире.