Metadata-Version: 2.1
Name: usb_rules
Version: 3.3
Summary: GUI for usb mount UDEV rules
Home-page: http://git.red-soft.biz/vladlen.murylyov/usb_rules
Author: Vladlen Murylyov
Author-email: vladlen.murylyov@red-soft.biz
Project-URL: Source, http://git.red-soft.biz/vladlen.murylyov/usb_rules
Project-URL: Bug Reports, https://support.red-soft.ru/
Keywords: usb,udev,gui
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Users
Classifier: Topic :: USB UDEV rules GUI
Classifier: License :: OSI Approved :: MIT
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.6, <4
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: PyGObject

# **Утилита ограничения монтирования usb-flash накопителей**
# Описание утилиты
Работа программы заключается в формировании правил udev.
Основной функционал представлен - для ограничения монтирования usb устройств и ведения логирования событий подключения.
Правила формируются по путях /etc/udev/rules.d/

запуск утилиты

`usb_rules`

# Работа первой страницы udev 
Работа страницы основана на инструкции https://redos.red-soft.ru/base/arm/usb-config/restriction-usb/ пункт  Вариант с параметром AUTHORIZED

Доступные параметры выводятся при помощи: 

`udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/{bus}/{device})`


На основании данных параметров формируется правило /etc/udev/rules.d/80-usb_rules-{number}.rules формата:
```
-разрешение монтирования по определенному параметру;
-если устройство не удовлетворяет требованиям белого списка, то запрет монтирования.
```

Пример правила:
```
ACTION!="add", GOTO="dont_remove_usb" 
ENV{DRIVER}!="usb-storage", GOTO="dont_remove_usb" 
ATTRS{model}=="Transcend 16GB ", GOTO="dont_remove_usb" 
ATTRS{serial}=="0DM97KDQ", GOTO="dont_remove_usb" 
ENV{DRIVER}=="usb-storage", ATTRS{authorized}=0
LABEL="dont_remove_usb"
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"
```

# Работа второй страницы udev для логирования событий
Работа страницы основана на инструкции https://redos.red-soft.ru/base/arm/usb-config/usb-log/

Доступные параметры выводятся при помощи: 

`udevadm info /sys/block/sdb #символы после sd* вводите в соответствии с вашим выводом $ ls -l /dev/sd*`

На основании данных параметров формируется правило /etc/udev/rules.d/98-usb_logs.rules формата:
```
ENV{DRIVER}=="usb-storage",ACTION=="add", RUN+="/bin/sh -c 'echo connected $devnode параметры_выбранные_пользователем $(date)>> /var/log/usblog.txt" 
ENV{DRIVER}=="usb-storage",ACTION=="remove", RUN+="/bin/sh -c 'echo unmount $devnode параметры_выбранные_пользователем $(date)>> /var/log/usblog.txt"
```

