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:

Dacă distribuția dvs. nu include aceste reguli, le puteți instala manual:

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

După instalarea regulilor, trebuie să le reîncărcați:

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

Dacă tot nu puteți accesa dispozitivul, încercați din nou după ce reporniți sistemul.

Limitări

Regulile udev recomandate utilizează mecanismul uaccess pentru a atribui dinamic permisiunile corespunzătoare. Acest mecanism necesită systemd și funcționează numai în cazul utilizatorilor conectați local (adică nu este valabil pentru conectările prin SSH sau similare).

Depanare

Dacă instalarea regulilor udev nu a rezolvat problema, puteți urma pașii de mai jos pentru a identifica cauza acesteia:

  1. Unplug the Nitrokey.

  2. Reporniți computerul pentru a vă asigura că regulile udev sunt activate.

  3. Executați comanda sudo dmesg --follow și conectați Nitrokey. Urmăriți mesajele din jurnal care apar ulterior. Ar trebui să vedeți o linie similară cu:

    [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. Identificați numele dispozitivului hidraw din mesajul de jurnal. În acest caz, acesta este hidraw3.

  5. Verificați permisiunile pentru dispozitivul hidraw executând comanda getfacl /dev/$name, unde $name este numele dispozitivului hidraw. Ar trebui să vedeți că utilizatorul dvs. are permisiunile rw. De exemplu, pentru utilizatorul 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. Dacă utilizatorul dumneavoastră nu dispune de permisiunile corespunzătoare, executați comanda loginctl list-sessions. Ar trebui să vedeți o sesiune pentru utilizatorul dumneavoastră cu un loc, de exemplu:

    $ 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.
    

Pașii suplimentari pentru depanarea regulilor udev sunt descriși aici.