/ Sys / स्थायी में अनुमतियां कैसे सेट करें?


12

मैं X को एक उपयोगकर्ता के रूप में शुरू कर रहा हूं और मुझे अपने कीबोर्ड की चमक सेट करने की आवश्यकता है /sys/class/leds/asus\:\:kbd_backlight/brightness/sys/निर्देशिका, रिबूट के बाद निर्मित हो जाता है तो अनुमतियाँ भी रीसेट कर देगा। मैं इसे कैसे सेट करूं, इसलिए मुझे हर बूट के बाद सभी उपयोगकर्ताओं द्वारा फ़ाइल को लिखने योग्य बनाने की आवश्यकता नहीं है?

मैं आर्चलिनक्स एसडीडीएम के साथ लॉगिन प्रबंधक और केडीई के रूप में डीई के रूप में उपयोग कर रहा हूं।


2
आप एक सिस्टम बूट सेवा में एक कमांड डाल सकते हैं।
गोल्डीलॉक्स

क्या आप एक सिस्टम सिस्टम सेवा बनाने के लिए हैं, जो अनुमतियाँ सेट करें? या आप एक विशिष्ट फ़ाइल से बात करते हैं?
xoned

भूतपूर्व। "सेवा" एक प्रणालीगत शब्द है, भले ही इस मामले में यह केवल एक-बंद आदेश होगा और डेमॉन नहीं। आप इसे एक प्रकार की "विविध सामान" सेवा बना सकते हैं जैसे rc.local sysV के अंतर्गत है। इस मामले में सेवा केवल एक शेल स्क्रिप्ट चलाती है, और आप कमांड को वहां डालते हैं।
गोल्डीलॉक्स

जवाबों:


13

नहीं, आप नहीं कर सकते हैं, sysfs की अनुमति को कर्नेल स्थान में परिभाषित किया गया है और इसे यूजरस्पेस टूल (जब तक कि कर्नेल समर्थन समर्थन के साथ) नहीं बदला जा सकता है।

लेकिन अपनी समस्या के लिए, आप एक sudo प्रविष्टि सेट कर सकते हैं जो सभी को उस पथ पर लिखने की अनुमति देता है, अर्थात ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

और जब आप उस निर्देशिका को लिखते हैं, तो इस तरह से एक स्क्रिप्ट का उपयोग करें, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"


मैंने कोशिश की, लेकिन यह हमेशा पासवर्ड के लिए पूछता है। मैंने एक NOPASSWD जोड़ने की भी कोशिश की: (ALL) के पीछे।
xoned

@ क्या आप फिर से कोशिश कर सकते हैं? मेरे अपडेट्स देखें
daisy

यह अब काम करता है। समस्या यह थी कि मेरा प्रवेश NOPASSWD के बिना एक दूसरे द्वारा अधिलेखित कर दिया गया था। और मैंने आपके उत्तर को स्वीकार कर लिया क्योंकि यह अन्य उत्तरों की तरह आसान था। सबको शुक्रीया।
xoned

मैं सोनी vaio में लिनक्स मिंट डेबियन का उपयोग कर रहा हूं और /sys/devices/platform/sony-laptop/kbd_backlightकीबोर्ड बैकलाइट को नियंत्रित करने के लिए एक फ़ाइल बनाने की कोशिश कर रहा हूं । मैंने आपके कोड में पथ बदल दिया है, जो इस त्रुटि की ओर ले जाता है: bash: syntax error near unexpected token ('मेरे द्वारा लिखी गई कमांड ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightकृपया सहायता करें
इंद्र

मैं जब तक मैं बीच में कॉमा जोड़ा एक Ubuntu मशीन पर इस काम के नहीं मिल सका /usr/bin/teeऔर /sys/class...। व्याकरण में संक्षिप्त रूप के बाद, man sudoersमुझे संदेह है कि अल्पविराम आवश्यक है।
ऋषि मिशेल

4

/sysलिनक्स में निर्देशिका नकली, यह फ़ाइलों की तरह कपड़े कर्नेल में एक दृश्य है। तो इसमें अनुमतियाँ बदलने के लिए स्थायी रूप से कर्नेल को हैक करने का मतलब है, और यह बीमार होगा। जैसा कि टिप्पणियां कहती हैं, शायद systemdयह स्थापित करने वाली एक इकाई एक समाधान होगी (सामान्य रूप से, बूट प्रक्रिया के हिस्से के रूप में परिवर्तन सेट करें)।


4

मुझे एक समान समस्या थी, मुझे नोडर्ड सेवा चलाने से पहले अनुमतियों को सेट करने की आवश्यकता थी। गोल्डीलॉक्स की टिप्पणी के बाद मैंने इस सिस्टम स्क्रिप्ट को बनाया:

$ cat /etc/systemd/system/setledspermissions.service

[Unit]
Description=Set leds writable to everybody
Before=nodered.service

[Service]
Type=oneshot
User=root
ExecStart=/bin/bash -c "/bin/chmod a+w /sys/class/leds/led0/*"

[Install]
WantedBy=multi-user.target

सेवा फ़ाइल लिखने के बाद मैंने इसे सक्षम किया

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service

क्या यह आम तौर पर जाने के लिए रास्ता है जब विशिष्ट / sys / रास्तों को लिखने की अनुमति देने की आवश्यकता है? मेरा उपयोग मामला मेरे .aptop पर स्क्रीन बैकलाइट चमक सेट कर रहा है।
रिचट

मुझे लगता है कि यह है क्योंकि sys पथ प्रत्येक बूट पुनः निर्मित है। लेकिन मैं उस बारे में निश्चित होने के लिए पर्याप्त विशेषज्ञ नहीं हूं।
hariseldon78
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.