Написание скрипта автоматического прописывания разрешенных USB - устройств.

Сообщения
14
#1
Добрый день, подскажите, как прописать необходимые мне флеш-накопители с помощью команд?
Т.к. будет у меня, допустим, 100 накопителей и 100 эвм, долго ручками прописывать. Хочу сделать скрипт. :sneaky:
 
Сообщения
14
#3
Опишите внятно чего вы хотите словами (в Linux нет такого понятия, операции: "прописать необходимые мне").
Вот смотрите, у меня есть 10 ПК, на них нужно прописать 10 флешек, которые можно подключать к данным ПК, а для других флешек сделать запрет. Как скриптом прописать все эти флешки на каждом компе по очереди? Руками долго это делать, так как необходимо каждую флешку добавлять в разрешенные устройства. Надеюсь, описал понятно, спасибо:)
 

Olej

New member
Сообщения
1 307
#4
Вот смотрите, у меня есть 10 ПК, на них нужно прописать 10 флешек, которые можно подключать к данным ПК, а для других флешек сделать запрет. Как скриптом прописать все эти флешки на каждом компе по очереди? Руками долго это делать, так как необходимо каждую флешку добавлять в разрешенные устройства.
Вообще то, на базовом уровне, все действия по горячему подключению-отключению устройств (USB и др.) прописываются правилами udev - файлами *.rules. При подключении устройства ядро посылает всем уведомление (сообщение) в специальном протоколе netlink. Почитать как работает всё это загадочное "волшебство" можете здесь: асинхронные уведомления и udev - и по ссылкам на статьи, там приведенным (тогда всё станет намного понятнее).

Для наглядности, правила, разрешения, запреты могут представляться графическим приложением ... но оно будет использовать тот же механизм udev и правил-файлов .rules. На этой же базе udev/.rules строятся любые системы разрешения/запрещения доступом, такие как в Astra Смоленск (но у меня нет такого дистрибутива, поэтому про эти частности ничего подсказать не могу).

Но если вы пишете о "скрипте", то делать это и отлаживать нужно в терминале, консольными командами. Сделать это можно разными способами. Но логика будет одна:
- нужно найти, выделить идентификационные признаки (код) ваших 10-ти флешек...
- написать правила .rules, запрещающие любые флешки с отличающимися кодами...
- поместить написанные файлы в нужное место.
Ну и обкатать это всё вживую...
 
Последнее редактирование:

Olej

New member
Сообщения
1 307
#5
на базовом уровне, все действия по горячему подключению-отключению устройств (USB и др.) прописываются правилами udev - файлами *.rules.
В ранних Linux, и вы можете как-раз это прочитать по публикациям, правила udev прописывались в /etc/udev/rules.d
Сейчас в Astra Linux (это CE, Орёл!) они здесь:
Код:
olej@astra:/usr/lib$ ls /lib/udev/rules.d
50-firmware.rules                  60-sensor.rules                 75-probe_mtd.rules
50-udev-default.rules              60-serial.rules                 78-sound-card.rules
55-dm.rules                        60-virtualbox-dkms.rules        80-debian-compat.rules
56-hpmud.rules                     60-virtualbox.rules             80-drivers.rules
60-block.rules                     61-kde-bluetooth-rfkill.rules   80-ifupdown.rules
60-bridge-network-interface.rules  64-btrfs.rules                  80-libinput-device-groups.rules
60-cdrom_id.rules                  64-xorg-xkb.rules               80-net-setup-link.rules
60-drm.rules                       65-libwacom.rules               80-udisks2.rules
60-evdev.rules                     66-xorg-synaptics-quirks.rules  84-nm-drivers.rules
60-fly-brightness.rules            69-libmtp.rules                 85-hwclock.rules
60-fuse.rules                      69-wacom.rules                  85-nm-unmanaged.rules
60-libgphoto2-6.rules              70-debian-uaccess.rules         90-alsa-restore.rules
60-libsane.rules                   70-mouse.rules                  90-console-setup.rules
60-pcmcia.rules                    70-power-switch.rules           90-libinput-model-quirks.rules
60-persistent-alsa.rules           70-touchpad.rules               90-pulseaudio.rules
60-persistent-input.rules          70-uaccess.rules                95-upower-csr.rules
60-persistent-storage-dm.rules     71-seat.rules                   95-upower-hid.rules
60-persistent-storage.rules        73-seat-late.rules              95-upower-wup.rules
60-persistent-storage-tape.rules   73-special-net-names.rules      99-systemd.rules
60-persistent-v4l.rules            73-usb-net-by-mac.rules
60-qemu-system-common.rules        75-net-description.rules
Можете их там рассмотреть.
Но как-раз в системных .rules комментариями прописано:
# Do not modify this file, it will get overwritten on updates.
# To override or extend the rules place a file in /etc/udev/rules.d
 

Olej

New member
Сообщения
1 307
#6
есть 10 ПК, на них нужно прописать 10 флешек, которые можно подключать к данным ПК, а для других флешек сделать запрет.
Как бы я делал на вашем месте?:
1. запустить программу мониторинга уведомлений netlink:
Код:
$ /sbin/udevadm monitor --property --kernel
...
2. потыкать эти 10 флешек в USB и записать (сохранить в файл) уведомления ядра на эти 10 флешек
3. выделить общие (что это флешки, а не WEB камера, скажем) + характерные (код этих именно флешек) признаки
4. на этом написать своё правило .rules
 

Montfer

New member
Сообщения
2 364
#7
По идее в смоленске разрешающие правила прописаны в /etc/parsec/PDAC/devices.cfg
В теории достаточно на одном ПК прописать нужные флешки и скопировать devices.cfg на другие ПК.
Работая со смоленском 1.5 такой фокус не прошел:
1. Тупо копируя файл: пропадали из графического интерфейса политики безопасности все правила, в т.ч. которые шли из коробки для примера.
2. Копируя содержимое devices.cfg с прописанными флешками в devices.cfg на компе, который нужно настроить: правила почему то отрабатывали через раз - то разрешит подключение, то нет.

Как обстоят дела с этим в версии 1.6 проверить пока что не могу.
 
Сообщения
37
#8
Добрый день, подскажите, как прописать необходимые мне флеш-накопители с помощью команд?
Т.к. будет у меня, допустим, 100 накопителей и 100 эвм, долго ручками прописывать. Хочу сделать скрипт. :sneaky:
У Вас локальные машины или сеть?
 
Сообщения
75
#10
Добрый день, подскажите, как прописать необходимые мне флеш-накопители с помощью команд?
Т.к. будет у меня, допустим, 100 накопителей и 100 эвм, долго ручками прописывать. Хочу сделать скрипт. :sneaky:
В общем так. Что бы ручками не втыкать на каждом компьютере все флешки надо на одном компьютере их все вставить и настроить через графическую утилиту. Затем скопировать на все машины файл /etc/parsec/PDAC/devices.cfg и все файлы с названием ваших флешек из каталога /etc/udev/rules.d/* (соответственно в те же каталоги как на оригинальном компьютере). И все... радуетесь жизни.


Нюанс: способ работает только для локальных автономных НЕСЕТЕВЫХ машин. Точнее не для полотики ALD, потому что в ALD все намного проще решается путём тиражирования политик и на сервере список флешек и их настройки храняться в базе данных.
Второй нюанс это то что если флешек очень много и они типовые (отличаются только серийным номером) то можно указанные выше файлы создать вручную или через самописный скрипт (я так делал, потому что у меня было 700 флешек).
 
Сообщения
14
#11
В общем так. Что бы ручками не втыкать на каждом компьютере все флешки надо на одном компьютере их все вставить и настроить через графическую утилиту. Затем скопировать на все машины файл /etc/parsec/PDAC/devices.cfg и все файлы с названием ваших флешек из каталога /etc/udev/rules.d/* (соответственно в те же каталоги как на оригинальном компьютере). И все... радуетесь жизни.


Нюанс: способ работает только для локальных автономных НЕСЕТЕВЫХ машин. Точнее не для полотики ALD, потому что в ALD все намного проще решается путём тиражирования политик и на сервере список флешек и их настройки храняться в базе данных.
Второй нюанс это то что если флешек очень много и они типовые (отличаются только серийным номером) то можно указанные выше файлы создать вручную или через самописный скрипт (я так делал, потому что у меня было 700 флешек).
Спасибо, за ответ. Помогло!
 

RGB

New member
Сообщения
4
#14
Уважаемый, дак Вы бы хоть выложили его для малоимущих знаниями в астре?
На самом деле, нужно просто создать типовой devices.cfg, распространить на машины, а далее применить изменения на этих машинах с помощью команды
sudo pdsc-adm commit
которая на основе devices.cfg и генерирует правила udev