Відповіді:
Використовуйте Udev. Udev - демон диспетчера пристроїв. Крім усього іншого, він відповідає за найменування своїх пристроїв. Ви можете визначити udev-правила, помістивши файли з певним синтаксисом у каталог правил. Правила можуть робити багато речей - зокрема, вони можуть запускати сценарії, коли підключено певний пристрій.
Спочатку потрібно зібрати інформацію на своєму пристрої. Скажімо, ви пов’язали це, і знайте, це йде під назвою /dev/sdb1
. Якщо так, запустіть:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
Команда виведе інформацію про ваш пристрій. Це досить тривалий. Потрібно знайти щось, що б однозначно ідентифікувало пристрій. Це може бути як серійний ATTRS{serial}=="UA04FLGC"
або комбінація інших атрибутів, таких як ATTRS{idVendor}
і ATTRS{idProduct}
. Більшість імен більш-менш пояснюють себе. Виберіть одну або комбінацію кількох, які здаються розумними - якщо вони не працюють, спробуйте щось інше.
Після того, як ви знайшли унікальний ідентифікатор створити файл , /etc/udev/rules.d
який починається з двома цифрами і закінчуються .rules
. Дві цифри визначають порядок обробки цих .rules-файлів - 70-usb-log-custom.rules
для вас повинен бути чудовим вибором. Синтаксис цього файлу правил може бути дуже складним. Якщо вам цікаво, google udev. Якщо не просто відкрийте новостворений файл і відредагуйте його, щоб виглядати приблизно так:
# /etc/udev/rules.d/70-usb-log-custom.rules
KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
Це фактичний файл udev, який я використовую. У ній є три правила. Кожен рядок - це власне правило. Перший рядок запускає скрипт для створення розшифрованого пристрою кожного разу, коли підключений зашифрований диск. Другий рядок викликає той самий сценарій з різними параметрами, якщо розшифрований пристрій буде видалено. Третій рядок встановлює дозволи для іншого пов'язаного пристрою.
Швидше за все, вам знадобиться лише перший рядок. Видаліть решту та вставте правильний серійний ряд (або компіляцію вибраних параметрів для ідентифікації пристрою).
KERNEL=="sd?1"
говорить, що пристрій, якого ми шукаємо в цьому правилі, називається так /dev/sda1
, /dev/sdc1
або щось подібне. Знак питання - це підстановка для будь-якого листа. ATTRS{serial}=="UA04FLGC"
тут є унікальним ідентифікатором. Для іншого пристрою, про який я говорив (третій рядок), я не використовую серійний номер, а комбінацію SYSFS{idVendor}=="1781"
та SYSFS{idProduct}=="0c9f"
для його ідентифікації.
ACTION=="add"
повідомляє правило, воно повинно діяти лише тоді, коли додано пристрій; не тоді, коли його видаляють.
SYMLINK+="cusb1"
створює символьне посилання на диск, так що ви знайдете його під /dev/cusb1
.
RUN+="/home/confus/bin/usb-encrypt.sh add %k"
запускає скрипт і передає до нього «додати» та «% k» (назва пристрою).
Не буду детальніше розповідати, оскільки є чудові підручники щодо правил udev. Те, що ви тут прочитали, має бути достатньо, щоб озирнутися.