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:

Jeśli Twoja dystrybucja nie udostępnia tych reguł, możesz je zainstalować ręcznie:

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

Po zainstalowaniu reguł należy je ponownie załadować:

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

Jeśli nadal nie możesz uzyskać dostępu do swojego urządzenia, spróbuj ponownie po ponownym uruchomieniu systemu.

Ograniczenia

Zalecane reguły udev wykorzystują mechanizm uaccess do dynamicznego przypisywania odpowiednich uprawnień. Mechanizm ten wymaga systemd i działa wyłącznie w przypadku użytkowników zalogowanych lokalnie (co oznacza, że nie obejmuje logowań przez SSH ani podobnych metod).

Rozwiązywanie problemów

Jeśli zainstalowanie reguł udev nie rozwiązało problemu, możesz wykonać poniższe czynności, aby zbadać przyczynę:

  1. Unplug the Nitrokey.

  2. Uruchom ponownie komputer, aby upewnić się, że reguły udev zostały aktywowane.

  3. Wprowadź polecenie ` `` sudo dmesg –follow` i podłącz Nitrokey. Zwróć uwagę na komunikaty dziennika, które pojawią się po wykonaniu polecenia. Powinieneś zobaczyć wiersz podobny do:

    [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. Określ nazwę urządzenia hidraw na podstawie komunikatu w dzienniku. W tym przypadku jest to hidraw3.

  5. Sprawdź uprawnienia dla urządzenia hidraw, uruchamiając polecenie ` `` getfacl /dev/$name`, gdzie ` `` $name` to nazwa urządzenia hidraw. Powinieneś zobaczyć, że Twój użytkownik posiada uprawnienia ` `` rw`. Na przykład dla użytkownika ` `` 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. Jeśli użytkownik nie posiada odpowiednich uprawnień, należy wykonać polecenie ` `` loginctl list-sessions`. Powinna pojawić się jedna sesja dla użytkownika z przypisanym stanowiskiem, na przykład:

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

Dodatkowe kroki dotyczące debugowania reguł udev opisano na stronie tutaj.