3.4.15.7.7 Утилита по созданию правил для монтирования USB-накопителей
Скачать документ Установка
Полная блокировка всех usb
Назначение личной привязки к UDEV-правилу
Протоколирование событий usb-flash накопителей
Окружение
- Версия РЕД ОС: 8
- Конфигурация: Рабочая станция
- Версия ПО: usb_rules-2.1-1
Утилита usb_rules основана на работе с правилами udev и системными сервисами systemd.
Вы можете подробнее ознакомиться с работой утилиты usb_rules, просмотрев наши обучающие видео:
на RuTube — Утилита по созданию правил для монтирования usb-flash накопителей;
в Яндекс.Дзен — Утилита по созданию правил для монтирования usb-flash накопителей;
в VK Видео — Утилита по созданию правил для монтирования usb-flash накопителей.
На наших каналах вы также сможете найти много другой полезной информации.
Установка
Установка утилиты доступна через пакетный менеджер dnfdragora («Главное меню» - «Администрирование» -«Управление пакетами dnfdragora»).
В поисковой строке пакетного менеджера введите название утилиты «usb_rules», нажмите «Enter» для поиска. Из списка результатов выберите последнюю версию утилиты и нажмите кнопку «Применить».
Будет выполнена установка пакета.
Также установка утилиты доступна из терминала. Для этого перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install usb_rules
После установки запуск утилиты доступен с правами пользователя root из «Главного меню» - «Параметры» - «Настройка ограничения монтирования» или через терминал с помощью команды:
usb-rules
Стартовое окно утилиты позволяет пользователю ознакомиться с подключенными usb-устройствами и со списком уже созданных правил.
При формировании нового правила пользователю доступны 4 шаблона:
usb-storage;
usb-modems;
usb;
gphoto2.
Каждое из правил отвечает за полную блокировку тех или иных устройств.
Полная блокировка всех usb
Ниже представлено содержимое шаблонов для каждого правила:
#type:usb-storage
ACTION!="add", GOTO="dont_remove_usb"
ENV{DRIVER}!="usb-storage", GOTO="dont_remove_usb"
ENV{DRIVER}=="usb-storage", ATTR{authorized}="0"
LABEL="dont_remove_usb"
#type:usb-modems
ACTION!="add", GOTO="dont_remove_usb"
DRIVER!="rndis_host", GOTO="dont_remove_usb"
DRIVER=="rndis_host", ATTR{authorized}="0"
LABEL="dont_remove_usb"
#type:usb
ACTION!="add", GOTO="dont_remove_usb"
SUBSYSTEM!="usb", GOTO="dont_remove_usb"
SUBSYSTEM=="usb", ATTR{authorized}="0"
LABEL="dont_remove_usb"
#type:gphoto2
ACTION!="add", GOTO="dont_remove_usb"
ENV{GPHOTO2_DRIVER}!="PTP",GOTO="dont_remove_usb"
ENV{GPHOTO2_DRIVER}=="PTP",ATTR{authorized}="0"
LABEL="dont_remove_usb"
При формировании правила из шаблонного в окне утилиты появляется строка, соответствующая сформированному правилу.
Далее потребуется создать разрешающие монтирование параметры. Для этого необходимо добавить атрибут, который в новом правиле будет отвечать за исключение из блокировки устройств, подходящих под данный параметр. Добавление или удаление таких атрибутов доступно после выбора интересующего правила и нажатия кнопки «Редактировать правило».
В полях «Атрибут» и «Значение» необходимо подобрать значения из доступных устройств. Просмотр доступных значений можно осуществить следующим образом:
В результате будут открыты следующие окна:
При добавлении пункта ATTR следует прописать значение и величины соответствующие:
Значения указываются, соответственно, без фигурных скобок {} и без кавычек "".
Для указания величин ENV следует выбирать величины:
В результате будет сформировано примерно следующее правило /etc/udev/rules.d/80-usb_rule.rules:
#type:usb-storage
ACTION!="add", GOTO="dont_remove_usb"
ENV{DRIVER}!="usb-storage", GOTO="dont_remove_usb"
ATTR{product}==UHCI Host Controller, GOTO="dont_remove_usb"
ENV{DRIVER}=="usb-storage", ATTR{authorized}="0"
LABEL="dont_remove_usb"
Назначение личной привязки к UDEV-правилу
За назначение привязки отвечает поле, которое активируется соответствующим флагом:
По умолчанию все пользователи не имеют прав. Соответственно, потребуется выбрать необходимых пользователей и задать им права «чтения», «чтения и записи» или «все права».
При формировании личной привязки будет создаваться systemd-сервис, который будет работать в связке с отведенным под него udev-правилом.
nano /etc/systemd/system/usb-mount@.service
[Unit]
Description=Mount USB Drive on %i
[Service]
RemainAfterExit=true
Type=oneshot
ExecStart=/usr/bin/python3 /usr/share/usb_rules/usb-mount.py add %i /etc/udev/rules.d/80-usb_rule.rules
ExecStop=/usr/bin/python3 /usr/share/usb_rules/usb-mount.py remove %i /etc/udev/rules.d/80-usb_rule.rules
Протоколирование событий usb-flash накопителей
Вкладка «Протоколирование udev» позволяет протоколировать события, связанные с usb-flash накопителями по выбранным пользователем атрибутам. Синтаксис добавления идентичен добавлению ENV-атрибутов.
В результате формирования правила для протоколирования будет создан файл /etc/udev/rules.d/98-usb_logs.rules со следующим примерным содержимым:
ENV{ID_USB_DRIVER}=="usb-storage",ACTION=="add", RUN+="/bin/sh -c 'echo connected $devnode USEC_INITIALIZED=%E{USEC_INITIALIZED} $(date)>> /var/log/usblog.txt'"
ENV{ID_USB_DRIVER}=="usb-storage",ACTION=="remove", RUN+="/bin/sh -c 'echo disconnected $devnode USEC_INITIALIZED=%E{USEC_INITIALIZED} $(date)>> /var/log/usblog.txt'"
Дата последнего изменения: 23.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.