Как предотвратить подключение HID-устройств к определенным портам USB?

Я только что написал следующее, используя @gilles awesome answer в качестве шаблона. У меня хорошо работает. Проверено на Ubuntu 16.04 с использованием zsh.

# get all users
getent passwd | while IFS=: read -r name password uid gid gecos home shell; do
    # only users that own their home directory
    if [ -d "$home" ] && [ "$(stat -c %u "$home")" = "$uid" ]; then
        # only users that have a shell, and a shell is not equal to /bin/false or /usr/sbin/nologin
        if [ ! -z "$shell" ] && [ "$shell" != "/bin/false" ] && [ "$shell" != "/usr/sbin/nologin" ]; then
            echo "$name's home directory is $home using shell $shell"
        fi
    fi
done
7
21.12.2017, 13:53
1 ответ

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

  • ID_INPUT_KEYBOARD
  • ID_INPUT_KEY
  • ID_INPUT_MOUSE
  • ID_INPUT_TOUCHPAD
  • ID_INPUT_TABLET
  • ID_INPUT_JOYSTICK

В правиле проверьте, что переменная среды с таким именем не пуста, например, сопоставьте ее с шаблоном glob ? * , который соответствует только при наличии есть хотя бы один символ. Например:

ENV{ID_INPUT_KEYBOARD}=="?*"

В каждом правиле, когда оно соответствует, установите для атрибута устройства авторизованный значение 0, например:

ATTR{authorized}="0"

Лучше всего заменить = на : = , поэтому он не может быть отменен более поздним правилом. Это дает типичное правило:

ACTION=="add", DEVPATH=="...", ENV{ID_INPUT_KEYBOARD}=="?*", ATTR{authorized}:="0"

См. эту презентацию Адриана Креншоу.

3
27.01.2020, 20:19

Теги

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