Ладно, в какой-то степени разобрался.
Решение udev. Вы можете позвонить с
udevadm info --name=/dev/sdb1 --attribute-walk
список всех атрибутов, используемых категорией, от конечной точки до корня.
Затем я создал локальное правило в /etc/udev/rules.d/10 -local.rules
Это правило содержит
SUBSYSTEMS=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/bin/usb_load.sh"
SUBSYSTEMS=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/usb_unload.sh"
Он сравнивает события, и если SUBSYSTEMS, ACTION и ENV{DEVTYPE} совпадают, RUN+= выполняет 2 сценария оболочки, которые я поместил в корзину. Он запускается от имени пользователя root, поэтому никаких проблем с разрешением впереди нет.
не забывай
udevadm control --reload
Чтобы перечитать правила
Решение наверняка можно улучшить, так как правила способны на большее, но пока это хорошее решение для меня. Я подправлю его вовремя.
Я думаю, что вы должны рассмотреть Docker, потому что он не потребляет ресурсы. В противном случае направьте своих студентов/пользователей на бесплатный онлайн-сервис Linux SSH по адресу https://bellard.org/jslinux/
.