Setting up the udev Rules

To be able to access your devices without root privileges, nitropy requires the Nitrokey udev rules. On many distributions, they can be installed from a package:

Если эти правила не входят в состав вашего дистрибутива, вы можете установить их вручную:

wget https://raw.githubusercontent.com/Nitrokey/nitrokey-udev-rules/main/41-nitrokey.rules
sudo mv 41-nitrokey.rules /etc/udev/rules.d/
sudo chown root:root /etc/udev/rules.d/41-nitrokey.rules
sudo chmod 644 /etc/udev/rules.d/41-nitrokey.rules

После установки правил их необходимо перезагрузить:

sudo udevadm control --reload-rules && sudo udevadm trigger

Если у вас по-прежнему нет доступа к устройству, попробуйте повторить попытку после перезагрузки системы.

Ограничения

Рекомендуемые правила udev используют механизм uaccess для динамического присвоения правильных прав доступа. Этот механизм требует наличия systemd и работает только с пользователями, вошедшими в систему локально (то есть без входа по SSH или аналогичных способов).

Устранение неполадок

Если установка правил udev не помогла устранить проблему, вы можете выполнить следующие действия для выяснения причины неисправности:

  1. Unplug the Nitrokey.

  2. Перезагрузите компьютер, чтобы правила udev вступили в силу.

  3. Выполните команду sudo dmesg --follow и подключите Nitrokey. Обратите внимание на сообщения в журнале, которые появятся после этого. Вы должны увидеть строку, похожую на следующую:

    [46561.825062] hid-generic 0003:20A0:42B2.000F: hiddev97,hidraw3: USB HID v1.11 Device [Nitrokey Nitrokey 3] on usb-0000:00:14.0-3.4.1/input1
    
  4. Определите имя устройства hidraw по сообщению в журнале. В данном случае это hidraw3.

  5. Проверьте права доступа к устройству hidraw, выполнив команду ` `` getfacl /dev/$name`, где $name — это имя устройства hidraw. Вы должны увидеть, что у вашего пользователя есть права доступа rw. Например, для пользователя myuser:

    $ getfacl /dev/hidraw3
    getfacl: Removing leading '/' from absolute path names
    # file: dev/hidraw3
    # owner: root
    # group: root
    user::rw-
    user:myuser:rw-
    group::---
    mask::rw-
    other::---
    
  6. Если у вашего пользователя нет необходимых прав доступа, выполните команду loginctl list-sessions. Вы должны увидеть один сеанс для вашего пользователя с лицензией, например:

    $ loginctl list-sessions
    SESSION  UID USER   SEAT  LEADER CLASS   TTY IDLE SINCE
          1 1000 myuser seat0 1487   user    -   no   -
          2 1000 myuser -     1495   manager -   no   -
    
    2 sessions listed.
    

Дополнительные шаги по отладке правил udev описаны по адресу здесь.