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 tu distribución no incluye las reglas, puedes instalarlas 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

Después de instalar las reglas, es necesario recargarlas:

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

Si sigues sin poder acceder a tu dispositivo, vuelve a intentarlo después de reiniciar el sistema.

Limitaciones

Las reglas de udev recomendadas utilizan el mecanismo uaccess para asignar dinámicamente los permisos correctos. Este mecanismo requiere systemd y solo funciona con usuarios que hayan iniciado sesión de forma local (es decir, no con inicios de sesión por SSH ni similares).

Solución de problemas

Si la instalación de las reglas de udev no ha solucionado el problema, puedes seguir los siguientes pasos para investigar la causa:

  1. Unplug the Nitrokey.

  2. Reinicia el ordenador para asegurarte de que las reglas de udev estén activadas.

  3. Ejecuta el comando sudo dmesg --follow y conecta el Nitrokey. Fíjate en los mensajes de registro que aparecen a continuación. Deberías ver una línea similar a esta:

    [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. Determina el nombre del dispositivo hidraw a partir del mensaje de registro. En este caso, es « ` » hidraw3`.

  5. Comprueba los permisos del dispositivo hidraw ejecutando el comando « ` » getfacl /dev/$name`, donde $name es el nombre del dispositivo hidraw. Deberías ver que tu usuario tiene los permisos rw. Por ejemplo, para el usuario 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 tu usuario no tiene los permisos adecuados, ejecuta el comando loginctl list-sessions. Deberías ver una sesión para tu usuario con una licencia, por ejemplo:

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

En se describen pasos adicionales para la depuración de las reglas de udev; aquí.