क्या अनुमतियाँ निर्धारित करता है / देव में?


11

मेरे पास एक बग है जहां अनुमतियाँ /dev/input/event*गलत हैं, इसलिए जब मैं मम्बल का उपयोग करता हूं , तो एप्लिकेशन प्रमुख प्रेस का पता नहीं लगा सकता है। अगर मैं निम्नलिखित कमांड को चलाता हूं तो यह समस्या को "ठीक" कर देता है, लेकिन मैं एक स्थायी समाधान चाहता हूं।

sudo chmod a+r /dev/input/event/*

अनुमतियाँ क्या निर्धारित करती हैं /dev/input/event*और मैं उन्हें स्थायी रूप से कैसे सेट करूँ?


6
ध्यान दें कि यदि आप पढ़ने के लिए "सभी" अनुमति देते हैं, /dev/input/event/*तो आप अनिवार्य रूप से अपने कीबोर्ड को सूंघने के लिए सभी को एक्सेस दे रहे हैं, उदाहरण के लिए पासवर्ड जो आप टाइप करते हैं। किसी एकल-उपयोगकर्ता प्रणाली पर यह बहुत अधिक मायने नहीं रखता है, लेकिन एकल-उपयोगकर्ता प्रणाली पर भी हम आमतौर पर सिस्टम उपयोगकर्ताओं को सुरक्षा की एक अतिरिक्त परत के रूप में उपयोग करते हैं जब कुछ घटक समझौता हो जाता है, और उदाहरण के nobodyलिए आपके कीबोर्ड पर उपयोगकर्ता की पहुँच प्रदान करके इनपुट स्ट्रीम आप इस सुरक्षा को कमजोर कर रहे हैं। हालांकि यह Mumble "ठीक" कर सकता है, यह आपकी समस्या का उचित सामान्य समाधान नहीं है। एक बेहतर तरीका होना चाहिए।
रॉबी बसाक

3
@popey क्या आप इस बारे में अधिक कह सकते हैं कि नोड्स पर अनुमतियां /dev/inputगलत क्यों हैं, और वर्तमान में स्वामित्व और अनुमतियाँ क्या हैं (शायद आउटपुट के साथ ls -l)? क्या समस्या यह है कि inputसमूह ने अनुमतियाँ नहीं पढ़ी हैं (या यह समूह का स्वामी नहीं है)? मेरे सिस्टम पर इवेंट फ़ाइलों का root:inputस्वामित्व है और उपयोगकर्ता और समूह के मालिक दोनों उनसे पढ़ सकते हैं। यदि आपके पास यह नहीं है, तो आपको शायद हर किसी को उन्हें पढ़ने देने के बजाय इसे इस तरह स्थापित करने का प्रयास करना चाहिए । यदि आप करते हैं यह है, यह पर्याप्त हो सकता है बुदबुदाना की शक्तियों के साथ चलाने के लिए inputसमूह।
एलियाह कगन

@EliahKagan मेरे जवाब से आप क्या समझते हैं? क्या आप इसकी समीक्षा कर सकते हैं?
सर्गी कोलोडियाज़नी

हाँ यह बुरा है। ACL का उपयोग करें। नीचे मेरा जवाब देखें
solsTiCe

क्या आप मुझे वितरण संस्करण या xorg- सर्वर संस्करण बता सकते हैं? क्योंकि xorg- सर्वर 2: 1.9.99.902-2ubuntu1 ने समस्या हल कर दी थी।
ताम्बोली

जवाबों:


4

फ़ाइलों पर अनुमति का प्रबंधन करने के लिए एक अधिक लचीला तरीका ACL का उपयोग करना है ।

sudo setfacl -m u:popey:rw /dev/input/eventx

यदि आपको वास्तव में इसे स्थायी बनाने की आवश्यकता है तो आप एक udv नियमों का उपयोग कर सकते हैं जो इसे आपके ईवेंट इनपुट डिवाइस के लिए सेट करता है

एक फ़ाइल जोड़ें /etc/udev/rules.d/99-userdev-input.rules :

KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:popey:rw $env{DEVNAME}"

आप ACL की अनुमति की जांच कर सकते हैं

getfacl /dev/input/event*

2

मुझे नहीं पता कि शुरू में चरित्र उपकरणों / देव / इनपुट / ईवेंट * की अनुमतियाँ क्या निर्धारित करती हैं

लेकिन, मुझे पता है कि आप उन अनुमतियों को एक सॉफ़्टवेयर के साथ बदल सकते हैं, जो आपके सिस्टम पर डिफ़ॉल्ट रूप से कोर्यूटिल्स के हिस्से के रूप में हैं। आदेश देखें man mknod

मेरे ईवेंट डिवाइस की अनुमतियां हैं:

crw-rw ---- 1 रूट इनपुट 13, 64 अप्रैल 14 06:39 / देव / इनपुट / इवेंट0

यहाँ कुछ उपयोग उदाहरण हैं:

~$ sudo mknod lolwat c 4 64 
~$ sudo mknod lolwatnow c 4 64  -m 777
~$ ls -l lolwat*
crw-r--r-- 1 root root 4, 64 Apr 14 08:07 lolwat
crwxrwxrwx 1 root root 4, 64 Apr 14 08:08 lolwatnow

यदि आपको प्रमुख और मामूली संख्याओं पर निर्णय लेने के बारे में अधिक जानकारी की आवश्यकता है, तो यहां देखें

अब, आप कहते हैं कि अनुमतियां गलत हैं। तो कुछ उन्हें गलत स्थापित करना चाहिए, और उस चीज को जड़ के रूप में चलाना चाहिए। mknod का उपयोग एक उपकरण बनाने के लिए किया जा सकता है, लेकिन mkdev भी कर सकता है। आप mkdev, और mknod के लिए जो भी डिफ़ॉल्ट कार्य कर रहे हैं, उसकी अनुमति देखना चाहते हैं।

जैसा कि मेरे उदाहरणों में: / dev / input / event0 में crw-rw अनुमतियाँ हैं, लेकिन डिफ़ॉल्ट अनुमतियाँ, lolwat की crw-r - r-- पर सेट की गई थीं

मेरे पास कुछ अनिश्चितता है, क्या डिवाइस का प्रकार मूल अनुमतियों को निर्धारित करता है। आप यह पता लगाने के लिए प्रयोग कर सकते हैं।

यहाँ mknod के बारे में अधिक जानकारी के लिए एक और कड़ी है


क्या मूल के रूप में चल रहा है?
j0h

1

असल में, आपको एक फ़ाइल जोड़ने की आवश्यकता होगी /etc/udev/rules.d/(आप इसे कुछ इस तरह नाम दे सकते हैं 75-input-events.conf)

और KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"उस फ़ाइल में प्रत्येक घटना के लिए लाइनें जोड़ें , जहां x संख्या है। उदाहरण के लिए, मेरे पास 9 के माध्यम से 0 की घटनाएं हैं, इसलिए मैं व्यक्तिगत रूप से उनमें से प्रत्येक के लिए करूंगा। इस सूत्र पर अंतिम उत्तर आपको KERNEL==event*(यानी वाइल्ड कार्ड के साथ) जोड़ा जा सकता है ।


0

मेरा सुझाव यह है कि आप एप्लिकेशन इनपुट-बर्तन स्थापित करें

sudo -i
apt-get update
apt-get install input-utils

यह उपयोगिताओं का एक संग्रह है जो लिनक्स कर्नेल की इनपुट परत (संस्करण 2.6 और बाद के संस्करण) के साथ काम करते समय उपयोगी होते हैं। शामिल कर्नेल को ज्ञात इनपुट उपकरणों को सूचीबद्ध करने के लिए उपयोगिताओं हैं, एक उपकरण द्वारा प्राप्त इनपुट घटनाओं को दिखाते हैं, और कीबोर्ड मैप्स को क्वेरी या संशोधित करते हैं।

ब्याज की कमान है:

sudo -i 
lsinput

यह सभी इनपुट डिवाइस और डिवाइस के बारे में संबंधित विवरणों को बाहर निकालता है।

Nth डिवाइस नंबर निर्दिष्ट करके, कमांड का उपयोग करके इनपुट ईवेंट का अवलोकन किया जा सकता है:

sudo -i
input-events <device number>

फिर Nth डिवाइस संख्या निर्दिष्ट करके, कमांड का उपयोग करके किसी विशेष ईवेंट डिवाइस के कीबोर्ड मैपिंग को डंप किया जा सकता है:

sudo -i
input-kyb <device number>

इन उपकरणों के साथ एक सिस्टम डिबग कर सकता है यह देखने के लिए कि क्या इनपुट अपेक्षित घटना कोड उत्पन्न करते हैं और इसलिए मुद्दों को सुलझाने में मदद करते हैं जैसे कि चाबियाँ काम क्यों नहीं करती हैं या गलत तरीके से मैप की जाती हैं।

लिनक्स कर्नेल के लिए Udev डिवाइस मैनेजर है। यह डिवाइस नोड्स / देव को प्रबंधित करता है और उपकरणों को जोड़ने या हटाने के दौरान सभी उपयोगकर्ता अंतरिक्ष कार्यों को संभालता है।

एवदेव लिनक्स कर्नेल में एक सामान्य इनपुट ईवेंट इंटरफ़ेस है। यह डिवाइस ड्राइवरों से कच्चे इनपुट ईवेंट को सामान्य करता है और उन्हें /dev/input/निर्देशिका में चरित्र उपकरणों के माध्यम से उपलब्ध कराता है ।

हर बार जब डिवाइस संरचना में परिवर्तन होता है, तो कर्नेल एक uevent का उत्सर्जन करता है जो udev द्वारा उठाया जाता है। udv तब /etc/udev/rules.d, /run/udev/rules.d और /lib/udev/rules.d निर्देशिका में घोषित नियमों का पालन करता है।

Uevent में निहित जानकारी के आधार पर, यह आवश्यक नियमों को ट्रिगर करने और निष्पादित करने के लिए आवश्यक नियम या नियमों को ढूंढता है।

ये क्रियाएं डिवाइस फ़ाइलों को बनाने या हटाने के लिए हो सकती हैं, लेकिन विशेष फ़र्मवेयर फ़ाइलों को कर्नेल मेमोरी में लोड करने को भी ट्रिगर कर सकती हैं।


0

एक टर्मिनल रन में:

सुडो नैनो -b /etc/rc.local

लाइन से बाहर निकलें जो "0 से बाहर निकलें" कहती है और इसके ऊपर एक लाइन में टाइप करें:

sudo chmod a + r / dev / input / घटना

उस से बाहर निकलने के लिए Ctrl + x दबाएं। यदि आप बचाना चाहते हैं तो यह आपसे पूछेगा। हिट वाई। यह आपसे पूछेगा कि क्या बचाना है। बस Enter मारा।

अब, उस कमांड को प्रत्येक बूट पर शुरू करना चाहिए और इस प्रकार आपको उस फ़ोल्डर को अनुमति देनी चाहिए। /Etc/rc.local फ़ाइल में स्वचालित रूप से रूट विशेषाधिकार होते हैं इसलिए आपको ऐसा करने के लिए पासवर्ड दर्ज करने की आवश्यकता नहीं होगी।

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