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. `` を実行して、hidrawデバイスの権限を確認してください。getfacl /dev/$name`` ここで、$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 コマンドを実行してください。たとえば、ライセンスが割り当てられたそのユーザーのセッションが1つ表示されるはずです。例:

    $ 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>`__ に記載されています。