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,并连接硝基。观察随后出现的日志消息。您应该会看到类似以下的一行:

    [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. 通过运行`getfacl /dev/$name` 来检查hidraw设备的权限,其中`$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>`__。