لماذا يتطلب PYUSB / LIBUSB أذونات الجذر (SUDO) على Linux؟

StackOverflow https://stackoverflow.com/questions/3738173

  •  03-10-2019
  •  | 
  •  

سؤال

لقد كنت أتجول مع pyusb في الآونة الأخيرة ، ووجدت أنه يعمل بشكل جميل على Linux (Ubuntu Have libusb 0.1 و 1.0 ، وكذلك OpenusB) ... ولكن فقط إذا قمت بتشغيل البرنامج بامتيازات الجذر (مع sudo, ، بالطبع).

هل يمكن لأي شخص أن يخبرني لماذا يتطلب امتيازات مرتفعة ، والأهم من ذلك ، إذا كان بإمكاني تغيير الأذونات بطريقة ما لجعلها تعمل لحسابات المستخدم العادية؟

هل كانت مفيدة؟

المحلول

libusb يتيح لك معالجة أجهزة USB التعسفية بطرق تعسفية. يمكنك تنسيق خارجي USB Harddisk ، على سبيل المثال.

بشكل عام ، يتطلب جميع الوصول المباشر للأجهزة root الامتيازات ، على الرغم من أنني أعتقد أن ذلك ممتلئ بالفعل root الامتيازات غير مطلوبة ، يجب أن تكون على ما يرام مع فقط CAP_SYS_RAWIO.

نصائح أخرى

يمكنك تغيير أذونات عقدة جهاز USB عن طريق إنشاء قاعدة UDEV. على سبيل المثال ، أضفت السطر التالي إلى ملف في /etc/udev/rules.d/

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

هذا يعين مالك عقدة الجهاز إلى root:usbusers عوضا عن root:root

بعد إضافة نفسي إلى usbusers المجموعة ، يمكنني الوصول إلى الجهاز.

انظر الجواب الذي أعطيته هنا:
كيف يمكنني أن أتواصل مع هذا الجهاز باستخدام PYUSB؟

يسمى:
قم بإعداد ملف قواعد UDEV للجهاز المحدد الذي تريد أن يتمكن المستخدمون العاديون من الوصول إليه. سيحدد هذا معرف البائع ومعرف المنتج ومجموعة.
يمكن العثور على البائع ومعرف المنتج باستخدام lsusb يأمر.

1. إنشاء ملف قواعد UDEV

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

ضع هذا في ملف يسمى (على سبيل المثال) /lib/udev/rules.d/50-yoursoftwarename.rules (حفر في Man Udev لقواعد التسمية)
ملاحظة: اتفاقية التسمية القديمة المستخدمة /etc/udev/rules.d/filename.rules ، التي تغيرت.

2. أضف أسماء المستخدمين إلى مجموعة Plugdev

adduser username plugdev

3. إجبار نظام UDEV على رؤية التغييرات الخاصة بك

sudo udevadm control --reload (هذا ناقص ناقص إعادة التحميل)
sudo udevadm trigger

4. افصل الجهاز وإعادة تشغيله أو إعادة تشغيل جهازك

يجب أن تكون النتيجة النهائية هي أن جميع أعضاء مجموعة Plugdev سيتمكنون الآن من الوصول إلى الجهاز.

تحرير: لاحظ ذلك في بعض الأنظمة المجموعة plugdev قد لا تكون المجموعة التي تحتاجها. يمكن أن تكون أيضًا المجموعة input في تجربتي ، اعتمادًا على ما تقوم بتوصيله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top