Как создать правило 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 каким-то образом.

  • Есть ли способ увидеть отметку времени или какие-либо доказательства того, когда / если мой USB был доступен в Linux?
  • Как я могу заставить udev принимать массовое хранение и отвергать все остальное?
  • Использование BitLocker и Linux
  • Как отличить USB-накопитель и CD-ROM?
  • Удаление вирусов с USB
  • Как установить CentOS 6 через запоминающее устройство USB?
  • Как установить Fedora или любой другой Linux на жесткий диск USB и настроить загрузку?
  • Сделайте загрузочный USB из ISO
  • 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= ).

    Interesting Posts

    В сценарии Bash в (set -x) не отображается команда «cat». (его содержание)

    Правильный способ создания сжатого, rsyncable зеркала каталога?

    Не удается установить программное обеспечение в Debian 6

    Stat, блоки и размер сектора – ext4

    Переменная окружения XAUTHORITY устанавливается повторно при каждом входе в систему

    IFS null – это не то же самое, что unset IFS?

    Получить ключевые идентификаторы apt и отпечатки пальцев в машиночитаемом формате

    Сравнить символы

    Создание программного обеспечения для Linux, созданного с использованием многострочной

    «Разделение ввода-вывода» на виртуальной машине Linux, выравнивание диска

    Понимание среды Linux Back-Slash и звездочки

    создание и отправка самозаверяющего открытого ключа с использованием GnuPG в CentOS 7

    Cant переназначить L_shift в L_control, если я не переназначу L_control на что-то еще в xkb

    Как использовать Emacs для распознавания и автоматического открытия зашифрованного файла GPG в бронированном формате ASCII?

    Пользователь не имеет доступа к crontab

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