2.2.7.4.2 Ограничение доступа к USB-накопителям
Скачать документ Примеры выбора устройств по определенным свойствам
Запрет автомонтирования с параметром UDISKS_IGNORE
Создание белого списка с параметром UDISKS_IGNORE
Запрет автомонтирования с параметром authorized
Создание белого списка с параметром authorized
Алгоритм создания белого списка USB-флеш-накопителей состоит из 2 этапов:
Вариант 1:
- Запрет монтирования всех USB-флеш-накопителей
- Разрешение монтирования некоторых устройств
Вариант 2:
- Разрешение монтирования некоторых устройств
- Запрет монтирования всех иных USB-флеш-накопителей
Вы можете подробнее ознакомиться с информацией по ограничению доступа к USB-накопителям, просмотрев наши обучающие видео:
на RuTube — Ограничение доступа к USB-накопителям;
в Яндекс.Дзен — Ограничение доступа к USB-накопителям;
в VK Видео — Ограничение доступа к USB-накопителям.
На наших каналах вы также сможете найти много другой полезной информации.
Примеры выбора устройств по определенным свойствам
Для создания белого списка USB-флеш-накопителей необходимо знать атрибуты накопителя.
1) Определите ваш флеш-накопитель:
ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 июн 30 12:59 /dev/sda brw-rw---- 1 root disk 8, 1 июл 22 12:59 /dev/sda1 brw-rw---- 1 root disk 8, 2 июл 22 12:59 /dev/sda2 brw-rw---- 1 root disk 8, 3 июн 30 12:59 /dev/sda3 brw-rw---- 1 root disk 8, 16 июл 22 13:43/dev/sdb # нужная нам строка brw-rw---- 1 root disk 8, 17 июн 30 13:43 /dev/sdb1
2) Проверьте атрибуты (символы после sd* должны вводиться в соответствии с вашим выводом команды ls -l /dev/sd*
):
udevadm info -a -p /sys/block/sdb
Запрет автомонтирования с параметром UDISKS_IGNORE
Для отключения автомонтирования USB-флеш-накопителей необходимо создать правило для udev.
Создайте файл /etc/udev/rules.d/99-usb.rules:
nano /etc/udev/rules.d/99-usb.rules
со следующим содержимым:
ENV{ID_USB_DRIVER}=="usb-storage",ENV{UDISKS_IGNORE}="1"
Флаг ENV{UDISKS_IGNORE}
отвечает за игнорирование устройства:
«0» – false;
«1» - true.
Для того чтобы новое правило вступило в силу, необходимо обновить правила udev:
udevadm control --reload-rules
После этого можно проверить и подключить USB-флеш-накопитель. В результате открыть его не удастся.
Создание белого списка с параметром UDISKS_IGNORE
Выборка разрешения доступа по трем параметрам:
серийному номеру устройства;
модели;
максимальному потребления тока.
Для их определения выполните поочередно команды:
udevadm info -a -p /sys/block/sdb | grep serial udevadm info -a -p /sys/block/sdb | grep product udevadm info -a -p /sys/block/sdb | grep bMaxPower
в выводе будет отображен серийный номер, модель и значение максимального потребления тока:
ATTRS{serial}=="04GS1F3LBIBDWU05"
ATTRS{model}=="Silicon-Power8G "
ATTRS{bMaxPower}=="200mA"
Запишите эти значения в файл правил в качестве разрешающих.
Конечный вариант файла /etc/udev/rules.d/99-usb.rules:
ENV{ID_USB_DRIVER}=="usb-storage",ENV{UDISKS_IGNORE}="1"
ATTRS{serial}=="04GS1F3LBIBDWU05",ENV{UDISKS_IGNORE}="0"
ATTRS{product}=="DataTraveler 3.0",ENV{UDISKS_IGNORE}="0"
ATTRS{bMaxPower}=="200mA",ENV{UDISKS_IGNORE}="0"
Здесь:
1 - заблокировать все usb-накопители;
0 - разрешить накопитель по определенным свойствам.
Для того чтобы новое правило вступило в силу, необходимо обновить правила udev:
udevadm control --reload-rules
Полный список атрибутов, по которым можно осуществить выборку, находится в выводе команды:
udevadm info -a -p /sys/block/sdb
Запрет автомонтирования с параметром authorized
Для отключения автомонтирования USB-флеш-накопителей необходимо будет создать правило для udev и исполняемый скрипт запрета монтирования USB-флеш-накопителей.
Создайте скрипт:
nano /usr/bin/remove_usb.sh
#!/bin/bash
var=$1
var2=$(echo $1 | sed 's/.*usb[[:digit:]]//' | sed 's/[a-z].*//'| sed 's/[0-9]-[0-9].//')
echo 0 > '/sys/bus/usb/devices'$var2'authorized'
Измените права на скрипт:
chmod +x /usr/bin/remove_usb.sh
Параметр authorized отвечает за монтирование USB-флеш-накопителя в момент подключения к ПК.
Создайте файл /etc/udev/rules.d/99-usb.rules:
nano /etc/udev/rules.d/99-usb.rules
со следующим содержимым:
ENV{ID_USB_DRIVER}=="usb-storage",RUN+="/bin/sh -c '/usr/bin/remove_usb.sh $devpath'"
Для того чтобы новое правило вступило в силу, необходимо обновить правила udev:
udevadm control --reload-rules
После этого можно проверить и подключить USB-флеш-накопитель. В результате открыть его не удастся.
Создание белого списка с параметром authorized
Выборка по серийному номеру устройства:
ATTRS{serial}=="0DM97KDQ", GOTO="dont_remove_usb"
Выборка по названию модели. Точное название смотрите в выводе команды:
udevadm info -a -p /sys/block/sdb ATTRS{product}=="DataTraveler 3.0", GOTO="dont_remove_usb"
Для удобства, когда полный список параметров устройства известен, можно производить отбор по конкретному параметру:
udevadm info -a -p /sys/block/sdb | grep "ATTRS{serial}" udevadm info -a -p /sys/block/sdb | grep "ATTRS{product}"
Конечный вариант файла /etc/udev/rules.d/99-usb.rules:
ACTION!="add", GOTO="dont_remove_usb"
ENV{ID_USB_DRIVER}!="usb-storage", GOTO="dont_remove_usb"
ATTRS{product}=="DataTraveler 3.0", GOTO="dont_remove_usb"
ATTRS{serial}=="0DM97KDQ", GOTO="dont_remove_usb"
ENV{ID_USB_DRIVER}=="usb-storage", RUN+="/bin/sh -c '/usr/bin/remove_usb.sh $devpath'"
LABEL="dont_remove_usb"
Логика данного правила отлична от первого варианта. В первом варианте происходила блокировка сразу всех usb флеш-накопителей, а только потом осуществлялось добавление устройств в белый список. В данном (втором) варианте сначала происходит добавление устройств в белый список, а только потом блокирование устройств (добавление в черный список). Такое действие связано с тем, что параметр authorized появляется в момент монтирования и, если его значение установить в 0, то для дальнейшей работы он становится недоступен. Соответственно, сначала требуется проверить, входит ли флеш-накопитель в белый список, и если входит, то разрешить его монтирование.
Для того чтобы новое правило вступило в силу, необходимо обновить правила udev:
udevadm control --reload-rules
Полный список атрибутов, по которым можно осуществить выборку, отображается в выводе команды:
udevadm info -a -p /sys/block/sdb
Дата последнего изменения: 04.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.