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 са описани тук: ` <https://github.com/Nitrokey/pynitrokey/issues/167#issuecomment-1024921046>` __.