как установить правило только для флеш-накопителей usb в rules.d

Простой вопрос: как добавить правило для флэш-накопителей usb только в каталог /lib/udev/rules.d/?

Например, если я хочу разрешить вставлять только флэш-накопители USB для моего ПК. Или разрешите только мою флешку. Есть ли какой-либо тип устройства / grupot для этой цели?

Может ли кто-нибудь предоставить пример для noob, пожалуйста? Надеюсь, это легко решить:)

3
задан 24 August 2017 в 10:20

2 ответа

Я ответил на аналогичный вопрос с примером:

Запуск скрипта при обнаружении ввода / вывода

Используйте эту команду,

udevadm monitor --property

Вставьте USB и проверьте свойство, которое является общим для устройств, которые вы хотите использовать, например:

ID_TYPE=disk ID_USB_DRIVER=usb-storage

Затем создайте свое правило

sudo gedit /etc/udev/rules.d/96-myusb.rules

с этими значениями в

ACTION=="add", SUBSYSTEM=="usb",ENV{ID_TYPE}=="disk", ENV{ID_USB_DRIVER}=="usb-storage",RUN+="/usr/local/bin/myusb-add.sh" ACTION=="remove", SUBSYSTEM=="usb",ENV{ID_TYPE}=="disk",ENV{ID_USB_DRIVER}=="usb-storage",RUN+="/usr/local/bin/myusb-remove.sh"

Файл правил влияет только на те устройства, которые соответствуют ENV{ID_TYPE} и ENV{ID_USB_DRIVER}. Это не повлияет на какое-либо другое устройство. Если вы хотите ограничить остальные устройства, возможно, вы можете создать правило, которое соответствует остальным устройствам, и ничего не делает в RUN.

Если вы хотите запустить действие только тогда, когда определенный USB-диск устройство подключено к определенному порту USB, попробуйте добавить в файл правил ENV {DEVPATH} = "yourUSBPATH". Замените yourUSBPATH на путь, который udevadm monitor --property сообщает при подключении устройства к порту, который вы хотите использовать. Я не тестировал это, но я думаю, что это логичный подход.

1
ответ дан 18 July 2018 в 08:00

Я ответил на аналогичный вопрос с примером:

Запуск скрипта при обнаружении ввода / вывода

Используйте эту команду,

udevadm monitor --property

Вставьте USB и проверьте свойство, которое является общим для устройств, которые вы хотите использовать, например:

ID_TYPE=disk ID_USB_DRIVER=usb-storage

Затем создайте свое правило

sudo gedit /etc/udev/rules.d/96-myusb.rules

с этими значениями в

ACTION=="add", SUBSYSTEM=="usb",ENV{ID_TYPE}=="disk", ENV{ID_USB_DRIVER}=="usb-storage",RUN+="/usr/local/bin/myusb-add.sh" ACTION=="remove", SUBSYSTEM=="usb",ENV{ID_TYPE}=="disk",ENV{ID_USB_DRIVER}=="usb-storage",RUN+="/usr/local/bin/myusb-remove.sh"

Файл правил влияет только на те устройства, которые соответствуют ENV{ID_TYPE} и ENV{ID_USB_DRIVER}. Это не повлияет на какое-либо другое устройство. Если вы хотите ограничить остальные устройства, возможно, вы можете создать правило, которое соответствует остальным устройствам, и ничего не делает в RUN.

Если вы хотите запустить действие только тогда, когда определенный USB-диск устройство подключено к определенному порту USB, попробуйте добавить в файл правил ENV {DEVPATH} = "yourUSBPATH". Замените yourUSBPATH на путь, который udevadm monitor --property сообщает при подключении устройства к порту, который вы хотите использовать. Я не тестировал это, но я думаю, что это логичный подход.

1
ответ дан 24 July 2018 в 18:57
  • 1
    Вау, спасибо большое. Но у меня есть ID_TYPE = scsi после вставки флеш-накопителя usb. Итак, в качестве следующего шага мне нужно написать какой-нибудь скрипт в папке /usr/local/bin/, чтобы ограничить доступ к любому другому USB-устройству, неужели я? – mr.boris 24 August 2017 в 11:35
  • 2
    @ mr.boris Я отредактировал ответ. Я надеюсь, что это помогает. – Katu 24 August 2017 в 11:46
  • 3
    Я добавил файл /etc/udev/rules.d/96-myusb.rules с этим правилом ACTION=="add", SUBSYSTEM=="usb",ENV{ID_TYPE}=="disk", ENV{ID_USB_DRIVER}=="usb-storage",RUN+="", но он не работает. Я все еще могу вставить любое устройство USB, поэтому никаких изменений. Почему такая простая вещь настолько сложна, и никто не может помочь даже профили linux ??? – mr.boris 15 October 2017 в 10:28
  • 4
    @ mr.boris вы заменили ID_TYPE и ID_USB_DRIVER значениями, которые вы получаете в udevadm? Вы добавили скрипт для запуска после RUN +? – Katu 16 October 2017 в 12:29
  • 5
    Извините, я думаю, что вас неправильно понял. Я оставил RUN пустым, потому что думал, что он должен быть пустым, чтобы ограничивать остальные устройства, как вы писали выше. Да, я заменил его, как в моем предыдущем комментарии: ID_TYPE = диск и ID_USB_DRIVER = usb-storage . Кажется, мне нужно назначить некоторую команду bash для моего правила сейчас (как вы писали раньше: RUN+="/usr/local/bin/myusb-add.sh"). Не могли бы вы дать мне несколько советов, что мне нужно в сценарии myusb-add.sh, пожалуйста? Должен ли он отключать порт usb на турнире udevadm и как? Как я могу указать только один требуемый порт usb в сценарии bash? – mr.boris 17 October 2017 в 07:08

Другие вопросы по тегам:

Похожие вопросы: