मैं गैर-डिफ़ॉल्ट उपयोगकर्ता को सीरियल डिवाइस ttyUSB0 का उपयोग करने की अनुमति कैसे दूं?


35

मेरे पास 2 उपयोगकर्ताओं के साथ एक Ubuntu 11.10 सिस्टम है:

  • पहली स्थापना के दौरान बनाया गया था
  • इसके बजाय दूसरा बनाया गया था। यह सूडर्स ग्रुप का है।

अब समस्या यह है कि जब दूसरा डिवाइस का उपयोग करने की कोशिश करता है ttyUSB0तो निम्न त्रुटि वापस आ जाती है:

"Could not open serial port /dev/ttyUSB0"

मैं इसका उपयोग करके इसे ठीक करने में सक्षम था:

sudo chown :second_user /dev/ttyUSB0

हालांकि जब मैं डिवाइस को डिस्कनेक्ट करता हूं और फिर से कनेक्ट करता हूं तो समस्या वापस आ जाती है।

क्या विभिन्न उपयोगकर्ताओं को उपकरणों तक पहुंचने की अनुमति देने का एक तरीका है? मुझे लगता है कि मुझे उपयोगकर्ता को एक विशिष्ट समूह में जोड़ना होगा। वर्तमान में मालिक है rootऔर समूह है dialout। हालाँकि मैं समूह के बारे में निश्चित नहीं हूँ और मुझे नहीं पता कि उपयोगकर्ता को कैसे जोड़ा जाए।

धन्यवाद!

जवाबों:


48

जैसा कि आपने देखा है, /dev/ttyUSB0डिवाइस का समूह है dialout। आपको केवल dialoutसमूह में दूसरा उपयोगकर्ता जोड़ने की आवश्यकता है :

sudo adduser second_user dialout

सेकंड_युसर को प्रभावी होने के लिए फिर से लॉग आउट और लॉग इन करना होगा।


धन्यवाद जेरेमी! क्या यह काम ssh एक्सेस के लिए भी है? क्योंकि जब मैं पीसी को ssh के माध्यम से एक्सेस करता हूं तो मुझे एक ही नाम के दो उपयोगकर्ता दिखाई देते हैं। मुझे लगता है कि एक स्थानीय उपयोगकर्ता है और दूसरा ssh एक है। मैं ssh उपयोगकर्ता को स्वामित्व कैसे दे सकता हूं?
Maverik

1
यह second_user को किसी भी लॉगिन, ssh या लोकल से सीरियल पोर्ट को एक्सेस करने की अनुमति देगा। आपको उस उपयोगकर्ता के किसी विशेष लॉगिन पर स्वामित्व निर्दिष्ट करने की आवश्यकता नहीं है।
जेरेमी केर

2
हाँ आप सही है। मुझे एक्सेस विज़ एसश करने के लिए लॉगआउट करना था और फिर लॉगिन करना था।
मावरिक

एक उपयोगकर्ता के सत्रों के लिए जो स्वचालित रूप से लॉग इन था, आपको कंप्यूटर को रिबूट करने की आवश्यकता है, न कि केवल एक्स विंडो सिस्टम में फिर से लॉगिन करने की। उबंटू 19.04 के साथ देखा गया।
तानीस

12

आसान तरीका:

sudoedit /etc/udev/rules.d/50-myusb.rules

इस पाठ को सहेजें:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

डिवाइस को अनप्लग करें और इसे फिर से भरें, और इसे किसी भी उपयोगकर्ता से पढ़ा / लिखा जाना चाहिए!


TtyACM सॉकेट में घर-निर्मित डिवाइस के लिए 14.04 में काम करता है। धन्यवाद। +1
NonStandardModel

नियमों को फिर से लोड करने के लिए आपको उत्तर देने से पहले ऐसा करने की आवश्यकता नहीं है? sudo udevadm control --reload?
एलेक्सिस पेस

इस पर निर्भर करता है कि फाइलसिस्टम आपके / etc / udev को संग्रहीत करता है, और आपके पास udev का कौन सा संस्करण है, आपको वास्तव में स्पष्ट रूप से पुन: प्रस्तुत करने की आवश्यकता हो सकती है। लेकिन मैंने जिन मशीनों का उपयोग किया है, उन सभी पर, udv इसे स्वचालित रूप से समझ रहा है (inotify का उपयोग करके)।
ओरियन लॉलर

यह वास्तव में ऐसा नहीं है कि इसे कैसे किया जाना चाहिए। USB सीरियल डिवाइस डायलआउट समूह या इसी तरह के होने चाहिए, और उपयोगकर्ता को उसमें जोड़ा जाना चाहिए। हालांकि आप जो प्रस्ताव दे रहे हैं वह अन्य प्रकार के यूएसबी उपकरणों के लिए समझ में आता है
क्रिस स्ट्रैटन

7

आप UDEV का उपयोग कर सकते हैं। यह एक ऐसी प्रणाली है जो हर बार प्लग या एक उपकरण (अन्य सामान के बीच) को अनप्लग करती है। इसके साथ, आप अनुमतियाँ सेट करने सहित होने वाली विभिन्न चीजों को स्क्रिप्ट करते हैं।

sudoedit /etc/udev/rules.d/50-ttyusb.rulesइसे वहां पर चलाएँ और चिपकाएँ:

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"

सहेजें, बाहर निकलें और फिर से शुरू करें और आपको ऊपर और चलना चाहिए। 666 की अनुमति सेट करने से कोई भी डिवाइस पर लिख सकता है।

मैं इस पेज को बंद कर रहा हूं जो कुछ साल पहले का है लेकिन अगर जेरेमी का समाधान नहीं होता तो ऐसा कुछ काम करना चाहिए ।


1
यह मेरे लिए काम करता है, अर्थात, मैंने udv नियमों का उपयोग किया है, लेकिन मैंने अपने मामले से मिलान करने के लिए वाक्यविन्यास को बदल दिया। linux.m2osw.com/sane-cannot-find-any-scanners - ध्यान दें कि यदि आप MODE = "0666" का उपयोग करते हैं तो आपको शायद ग्रुप की आवश्यकता नहीं है। केवल एक या दूसरे उपयोगी होगा।
एलेक्सिस विल्के

5

शानदार - यहाँ दिया गया UDEV समाधान मेरे लिए टिकट था।

मैंने शराब के माध्यम से Icom का CS-F3020_F5010_F5020 प्रोग्राम स्थापित किया, कॉम पोर्ट के लिए लिंक इस प्रकार बनाया:

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 

तब मुझे एहसास हुआ कि मुझे इसे एक्सेस करने की अनुमति देने के लिए / dev / ttyUSB0 पर अनुमतियों को बदलने की आवश्यकता है। जब तक आप USB को अनप्लग / रिप्लेस नहीं करते तब तक बढ़िया काम करता है, फिर आपको अनुमतियों को फिर से बदलना होगा।

मैंने अपने उपयोगकर्ता को डायलआउट समूह में जोड़ने का प्रयास किया, लेकिन इससे किसी कारण से समस्या हल नहीं हुई।

UDEV का उपयोग करना पहेली के अंतिम टुकड़े को हल करता है। अब मैं लिनक्स, प्लग का उपयोग करके अपने आईकॉम रेडियो को प्रोग्राम कर सकता हूं और बिना किसी उपद्रव के यूएसबी / सीरियल डिवाइस को अनप्लग कर सकता हूं। वू हू। धन्यवाद।


3

Udv नियम काम करते हैं लेकिन जैसा कि लिखा गया है कि उनके पास सभी ttyUSB*उपकरणों को सभी के लिए सुलभ बनाने का बहुत बुरा दुष्प्रभाव है। यह अच्छा नहीं है क्योंकि यह सिस्टम पर और क्या है इसके आधार पर एक सुरक्षा जोखिम हो सकता है।

इसके बजाय एक अधिक चयनात्मक udv नियम का उपयोग करें। उदाहरण के लिए मेरे पास एक USB डिवाइस है जो स्विच का एक सेट संचालित करता है। Dmesg से जब इसे प्लग किया जाता है तो मैं निर्माता की आईडी और उत्पाद कोड (प्लस, यहां तक ​​कि इस मामले में, डिवाइस के लिए एक सीरियल नंबर) देख सकता हूं। मैं जोड़ सकते हैं:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"

ऊपर कर्नेल लाइनों और नियम केवल उस डिवाइस पर लागू होंगे। केवल MODEचर को निर्दिष्ट करने के बजाय समूह को भी सेट करना बेहतर है:

GROUP="whatever", MODE="0660"

तब समूह ' whatever' में केवल लोगों को ही लिखित पहुँच मिलेगी।

जॉन बॉलर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.