วิธีการตั้งค่าการอนุญาตใน / sys / ถาวร?


12

ฉันเริ่ม X /sys/class/leds/asus\:\:kbd_backlight/brightnessเป็นผู้ใช้และความจำเป็นในการตั้งค่าความสว่างแป้นพิมพ์ของฉันใน /sys/ไดเรกทอรีได้รับการสร้างขึ้นหลังจากรีบูตเพื่อสิทธิ์ที่จะตั้งค่าเกินไป ฉันจะตั้งค่าอย่างไรฉันจึงไม่จำเป็นต้องเขียนไฟล์ให้ผู้ใช้ทุกคนหลังจากบู๊ตทุกครั้ง?

ฉันใช้ Archlinux กับ SDDM เป็นเครื่องมือจัดการการเข้าสู่ระบบและ KDE เป็น DE


2
คุณสามารถใส่คำสั่งในบริการการบูต systemd
goldilocks

คุณหมายถึงการสร้างบริการ systemd ของตัวเองซึ่งตั้งค่าการอนุญาตหรือไม่ หรือคุณพูดจากไฟล์เฉพาะ
xoned

อดีต. "Service" เป็นคำศัพท์ systemd แม้ว่าในกรณีนี้มันจะเป็นเพียงคำสั่ง one-off ไม่ใช่ daemon คุณสามารถทำให้มันเป็นบริการ "สิ่งเบ็ดเตล็ด" เช่น rc.local อยู่ภายใต้ sysV ในกรณีนี้บริการเพิ่งรันเชลล์สคริปต์และคุณวางคำสั่งไว้ในนั้น
goldilocks

คำตอบ:


13

ไม่คุณไม่สามารถอนุญาตสิทธิ์ sysfs ได้ในพื้นที่เคอร์เนลและไม่สามารถเปลี่ยนแปลงได้ด้วยเครื่องมือ userspace (ยกเว้นด้วยการสนับสนุนด้านเคอร์เนล)

แต่สำหรับปัญหาของคุณเองคุณสามารถตั้งค่ารายการ 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

@Timo คุณสามารถลองอีกครั้งได้ไหม ดูอัปเดตของฉัน
เดซี่

มันใช้งานได้แล้ว ปัญหาคือว่ารายการของฉันถูกเขียนทับโดยคนอื่นโดยไม่ต้อง NOPASSWD และฉันก็ยอมรับคำตอบของคุณเพราะมันง่ายกว่าคำตอบอื่น ๆ ขอบคุณทุกคน
xoned

ฉันใช้ linux Mint Debian ใน sony 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โปรดช่วย
Indra

ฉันไม่สามารถรับทำงานนี้บนเครื่อง Ubuntu จนกว่าฉันจะเพิ่มเครื่องหมายจุลภาคระหว่างและ/usr/bin/tee /sys/class...หลังจากดูไวยกรณ์ในman sudoersฉันคิดว่าจำเป็นต้องใช้เครื่องหมายจุลภาค
Sage Mitchell

4

/sysไดเรกทอรีในลินุกซ์เป็นของปลอมมันเป็นมุมมองใน kernel แต่งตัวเป็นไฟล์ ดังนั้นหากต้องการเปลี่ยนการอนุญาตอย่างถาวรหมายความว่าแฮกเกอร์เคอร์เนลและนั่นจะเป็นคำแนะนำที่ไม่ดี ตามความเห็นที่บอกว่าอาจเป็นการsystemdตั้งค่าหน่วยซึ่งอาจเป็นวิธีแก้ปัญหา (โดยทั่วไปให้ตั้งค่าการเปลี่ยนแปลงเป็นส่วนหนึ่งของกระบวนการบูต)


4

ฉันมีปัญหาที่คล้ายกันฉันจำเป็นต้องตั้งค่าการอนุญาตก่อนที่จะเรียกใช้บริการ nodered ตามความคิดเห็นของ goldilocks ฉันสร้างสคริปต์ systemd นี้:

$ 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 / พา ธ เฉพาะหรือไม่? กรณีการใช้งานของฉันคือการตั้งค่าความสว่างของแสงไฟหน้าจอบนแล็ปท็อปของฉัน
Richrd

ฉันเดาว่าเป็นเพราะเส้นทาง sys ถูกสร้างขึ้นใหม่ในการบู๊ตแต่ละครั้ง แต่ฉันไม่ชำนาญพอที่จะแน่ใจเกี่ยวกับเรื่องนี้
hariseldon78
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.