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:

Si votre distribution ne fournit pas ces règles, vous pouvez les installer manuellement :

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

Après avoir installé les règles, vous devez les recharger : :

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

Si vous ne parvenez toujours pas à accéder à votre appareil, réessayez après avoir redémarré votre système.

Limites

Les règles udev recommandées utilisent le mécanisme uaccess pour attribuer dynamiquement les droits d’accès appropriés. Ce mécanisme nécessite systemd et ne fonctionne qu’avec les utilisateurs connectés localement (c’est-à-dire pas de connexions SSH ou similaires).

Dépannage

Si l’installation des règles udev n’a pas permis de résoudre le problème, vous pouvez suivre les étapes suivantes pour en déterminer la cause :

  1. Unplug the Nitrokey.

  2. Redémarrez l’ordinateur pour vous assurer que les règles udev sont bien activées.

  3. Exécutez la commande sudo dmesg --follow et connectez la Nitrokey. Observez les messages du journal qui s’affichent ensuite. Vous devriez voir une ligne similaire à celle-ci :

    [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. Identifiez le nom du périphérique hidraw à partir du message du journal. Dans ce cas, il s’agit de hidraw3.

  5. Vérifiez les droits d’accès du périphérique hidraw en exécutant la commande suivante : ` `` getfacl /dev/$name`, où ` `` $name` correspond au nom du périphérique hidraw. Vous devriez voir que votre utilisateur dispose des droits d’accès suivants : ` `` rw`. Par exemple, pour l’utilisateur ` `` 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. Si votre utilisateur ne dispose pas des autorisations nécessaires, exécutez la commande loginctl list-sessions. Vous devriez voir apparaître une session pour votre utilisateur disposant d’une licence, par exemple :

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

Des étapes supplémentaires pour le débogage des règles udev sont décrites ici : ` <https://github.com/Nitrokey/pynitrokey/issues/167#issuecomment-1024921046>` __.