2010-09-17 14 views

Odpowiedz

5

libusb Umożliwia manipulowanie arbitralnymi urządzeniami USB w dowolny sposób. Można na przykład sformatować zewnętrzny dysk twardy USB.

Ogólnie rzecz biorąc, bezpośredni dostęp do sprzętu wymaga root uprawnień, chociaż domyślnie nie są wymagane pełne uprawnienia root, powinieneś być w porządku tylko z CAP_SYS_RAWIO.

+0

To ma wiele sensu. Spróbuję ... – ewall

+0

Jak ustawić CAP_SYS_RAWIO z PyUSB? – jedierikb

+0

'CAP_SYS_RAWIO' może być trywialnie wykorzystany, aby uzyskać pełny katalog główny, więc nie uzyskujesz niczego, korzystając z tej możliwości. – caf

10

Możesz zmienić uprawnienia węzła urządzenia USB, tworząc regułę udev. np. I dodaje następujący wiersz do pliku w /etc/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="usbusers" 

Ustawia właściciela węzła urządzenia do root:usbusers zamiast root:root

Po dodaniu się do grupy usbusers, można uzyskać dostęp do urządzenia.

+0

Fajnie ... wkrótce wypróbuje! – ewall

1

Zobacz odpowiedź, że dałem tutaj:
How can I comunicate with this device using pyusb?

a mianowicie:
Skonfiguruj udev plik zasad dla konkretnego urządzenia, które chcesz normalni użytkownicy mogli uzyskać dostęp. To określi identyfikator dostawcy, identyfikator produktu i grupę.
Identyfikator dostawcy i produktu można znaleźć za pomocą komendy lsusb.

1. Tworzenie rządzi udev złożyć

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="171b", ATTRS{idProduct}=="2001", MODE="660", GROUP="plugdev" 

umieścić to w pliku o nazwie (na przykład) /lib/udev/rules.d/50-YourSoftwareName.rules (grzebać w udev dla człowieka zasady nazewnictwa plików)
UWAGA: Stara konwencja nazewnictwa używana /etc/udev/rules.d/filename.rules, która uległa zmianie.

2. dodać nazwy użytkowników do grupy plugdev

adduser username plugdev

3. zmusić system udev, aby zobaczyć wprowadzone zmiany

sudo udevadm control --reload (czyli minus minus reload)
sudo udevadm trigger

4. 4. Odłączyć i odłączyć urządzenie Devi ce lub zrestartuj urządzenie

Końcowym rezultatem powinno być to, że wszyscy członkowie grupy plugdev będą teraz mogli uzyskać dostęp do urządzenia.

EDYCJA: Należy pamiętać, że w niektórych systemach grupa plugdev może nie być potrzebna. Może to być także grupa input w moim odczuciu, w zależności od tego, co podłączasz.

1

Istnieje wcześniejsza odpowiedź @ rolf-of-saxony, która w dużym stopniu wyjaśnia, jak utworzyć regułę udev, ale zaleca jej instalację reguła w niewłaściwym folderze. Moja odpowiedź opiera się na tym, ale does not mess with the systems folder structure:

uzyskać Deviceid vendorId wywołując

lsusb 

dla klawiatury Logitech G203 Mouse i K120 to skutkuje $

lsusb | grep Logitech 
Bus 004 Device 003: ID 046d:c31c Logitech, Inc. Keyboard K120 
Bus 003 Device 008: ID 046d:c084 Logitech, Inc. 

tutaj: vendorID jest 046d dla obu urządzeń USB. Mysz deviceID jest c084

teraz utworzyć regułę w katalogu ustawień /etc/udev/rules.d (edycji idVendor i idProduct na urządzeniu!

sudo echo 'ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c084", MODE="660", GROUP="plugdev"' > /etc/udev/rules.d/90-logitechG203.rules 

sprawdzenie, czy użytkownik jest w grupie plugdev wywołując

groups | grep plugdev 

i dodać użytkownika do tej grupy, jeśli nie, wywołując

sudo adduser $USER plugdev 

reload udev

sudo udevadm control --reload (that is minus minus reload) 
sudo udevadm trigger 

Odłącz i ponownie podłącz urządzenie do zmiany odniosły skutek.

Powiązane problemy