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:
アーチ・リナックス:`nitrokey-udev-rules<https://archlinux.org/packages/extra/any/nitrokey-udev-rules/>`__
Debian:`ニトロキー-udev<https://packages.debian.org/search?keywords=nitrokey-udev&searchon=names&exact=1&suite=all§ion=all>`__ (Debian 14 Forky 以降)
NixOS:`nitrokey-udev-rules<https://search.nixos.org/packages?channel=unstable&query=nitrokey-udev-rules#show=nitrokey-udev-rules>`__ (set
hardware.nitrokey.enableto``true``)Ubuntu:`ニトロキー-udev<https://packages.ubuntu.com/search?keywords=nitrokey-udev&searchon=names&exact=1&suite=all§ion=all>`__ (Ubuntu 26.10 Stonking Stingray 以降)
お使いのディストリビューションにルールが同梱されていない場合は、手動でルールをインストールすることができます:
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 ルールをインストールしても問題が解決しない場合は、以下の手順に従って原因を調査してください:
Unplug the Nitrokey.
udev ルールが有効になるよう、コンピュータを再起動してください。
``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
ログメッセージからhidrawデバイスの名前を特定します。この場合は、``hidraw3``となります。
`` を実行して、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::---
ユーザーに適切な権限がない場合は、
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>`__ に記載されています。