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:

Se la tua distribuzione non fornisce le regole, puoi installarle manualmente:

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

Dopo aver installato le regole, è necessario ricaricarle:

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

Se non riesci ancora ad accedere al tuo dispositivo, riprova dopo aver riavviato il sistema.

Limitazioni

Le regole udev consigliate utilizzano il meccanismo uaccess per assegnare dinamicamente i permessi corretti. Questo meccanismo richiede systemd e funziona solo con gli utenti che hanno effettuato l’accesso localmente (il che significa che non sono ammessi accessi SSH o simili).

Risoluzione dei problemi

Se l’installazione delle regole udev non ha risolto il problema, è possibile seguire i passaggi riportati di seguito per individuare la causa del problema:

  1. Unplug the Nitrokey.

  2. Riavvia il computer per assicurarti che le regole udev siano attive.

  3. Esegui il comando sudo dmesg --follow e collega la Nitrokey. Osserva i messaggi di log che compaiono in seguito. Dovresti vedere una riga simile a questa:

    [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. Individuare il nome del dispositivo hidraw dal messaggio di log. In questo caso, è hidraw3.

  5. Verifica i permessi relativi al dispositivo hidraw eseguendo il comando getfacl /dev/$name, dove $name è il nome del dispositivo hidraw. Dovresti vedere il tuo utente con i permessi rw. Ad esempio, per l’utente 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. Se l’utente non dispone delle autorizzazioni corrette, eseguire il comando loginctl list-sessions. Dovrebbe apparire una sessione relativa all’utente con una licenza, ad esempio:

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

Ulteriori passaggi per il debug delle regole udev sono descritti qui.