ไม่สามารถเขียนไปยังไฟล์ / sys / class / backlight / acpi_video0 / ความสว่าง (Ubuntu)


16

ฉันพยายามเปลี่ยนความสว่างโดยเขียนทับค่าในไฟล์นี้:

sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied

มันไม่ทำงานแม้ว่าจะใช้ sudo อย่างไรก็ตามถ้าฉันเปลี่ยนไปใช้ super-user ด้วย su มันก็ใช้ได้ ทำไมถึงเป็นอย่างนั้น?


การกระทำนี้ จำกัด เฉพาะผู้ใช้ sudo เท่านั้น ฉันพบคำตอบในความคิดเห็นนี้ :The reason that this is set at su permissions is that a virus could conceivably make your screen dim and go bright at incredible speed ultimately damaging your hardware display. In the 90's I encountered a virus that would adjust the screen refresh Hertz so rapidly that your monitor would fry.
Alexey Volodko

คำตอบ:


17

ข้อผิดพลาดเกิดขึ้นเนื่องจาก sudo ยกระดับสิทธิ์สำหรับคำสั่ง ( sudo echo 5) แต่ไม่ใช่การเปลี่ยนเส้นทางเพื่อเขียนไฟล์ ( > /sys/class/backlight/acpi_video0/brightness) เปลือกทุบตีจริงต้องได้รับอนุญาตในการเขียนซึ่งเป็นสาเหตุว่าทำไมมันล้มเหลวด้วย sudo แต่ทำงานเป็นรูต

คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยการรันteeคำสั่งเป็นรูทเพื่อเขียนไฟล์:

echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness

โปรดทราบว่าสิ่งนี้จะสะท้อน "5" ไปยังเทอร์มินัลของคุณด้วย นี่เป็นผลข้างเคียงปกติของteeคำสั่ง


เครดิตไปที่ @duskwuff สำหรับteeวิธีแก้ปัญหาที่ฉลาด
mguymon

5
ฉันไม่สามารถให้เครดิตกับการทำเช่นนั้นได้ - มันเป็นนิทานพื้นบ้านของ UNIX ที่ฉันเลือกจากผู้รู้ - ที่
duskwuff -inactive-

1
ไม่ทำงานกับฉันด้วย / sys / class / drm / card0 / อุปกรณ์ / pp_sclk_od ไม่สามารถเปลี่ยนค่าได้
alexela

5

ตามที่เขียนไว้ใน Arch wiki ( ลิงค์ ) โดยค่าเริ่มต้นrootสามารถเปลี่ยนความสว่างได้ด้วยวิธีนี้เท่านั้น เพื่อให้ผู้ใช้ในvideoกลุ่มที่จะเปลี่ยนความสว่างเป็นudevกฎเช่นต่อไปนี้สามารถนำมาใช้ (แทนที่<vendor>ด้วยรหัสผู้จำหน่ายของคุณเช่น. acpi_video0, intel_backlight):

% cat /etc/udev/rules.d/backlight.rules
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<vendor>", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<vendor>", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

จากนั้นคุณต้องเพิ่มผู้ใช้ของคุณในvideoกลุ่ม

usermod -aG video <user>

หลังจากนั้นควรทำงาน:

echo 5 > /sys/class/backlight/<vendor>/brightness

1
วิธีนี้ใช้ได้สำหรับผมหลังจากที่เปลี่ยนจากacpi_video0 intel_backlight
เมห์

1
ขอบคุณสำหรับความคิดเห็นของคุณ ฉันได้อัพเดตคำตอบแล้ว
Manuel Schmitzberger

2

หากคุณไม่ต้องการให้ 5 เสียงก้องสิ่งนี้ก็ใช้งานได้:

sudo sh -c 'echo 5 > /sys/class/backlight/acpi_video0/brightness'

0

ฉันดิ้นรนกับปัญหานี้ใน VAIO VPCEG ของฉันมาระยะหนึ่งแล้ว หลังจากทำทุกอย่างที่กล่าวถึงในทุกฟอรั่มฉันพบสิ่งที่น่าสนใจ:

หลังจากเปลี่ยนพารามิเตอร์การบู๊ตacpi_osi=Linux acpi_backlight=vendorและพยายามเปลี่ยนด้วยตนเอง/sys/class/backlight/[vendor - in my case intel_backlight]/brightnessฉันรู้ว่าการเปลี่ยนการอนุญาตไปยังไฟล์นี้จากรูทเป็นผู้ใช้ของฉันและการรีสตาร์ทบริการ acpid นี่จะทำให้ฉันสามารถใช้ปุ่มปรับความสว่างได้อย่างไม่มีที่ติ


-1

โซลูชันด้านล่างใช้ได้ดีสำหรับฉัน ..

ฉันโพสต์ไว้เป็นคำตอบเพื่อให้ผู้อื่นได้รับความช่วยเหลือ:

เปลี่ยนการอนุญาต:

sudo chmod a+rw /sys/class/backlight/intel_backlight/brightness

ตอนนี้เปลี่ยนความสว่าง:

echo 400 > /sys/class/backlight/intel_backlight/brightness

ในกรณีของคุณมันจะเป็น: /sys/class/backlight/acpi_video0/brightness


1
ยินดีต้อนรับสู่ Super User! โปรดอย่าเพิ่ม "ขอบคุณ" เป็นคำตอบ ลงทุนเวลาในไซต์และคุณจะได้รับสิทธิ์ที่เพียงพอในการถอนคำตอบที่คุณชอบซึ่งเป็นวิธีที่ผู้ใช้ระดับสูงในการพูดขอบคุณ
DavidPostill

นอกจากนี้คุณไม่ได้ตอบคำถามซึ่งก็คือ "ทำไมจึงเป็นเช่นนั้น"
DavidPostill

ขอบคุณมาก .. สำหรับข้อมูลและขอโทษจริงๆ .. เพียงเพราะฉัน .. คุณเสียเวลาสำคัญของคุณสำหรับแนวทาง me..i จะให้แน่ใจว่านี้ไม่ได้เกิดขึ้นอีกครั้ง
noobdeveloper99

ไม่ใช่วิธีปฏิบัติที่ดีที่อนุญาตให้ทุกคนอ่านและเขียนไฟล์กำหนดค่าระบบเช่นนั้น
Linde

ฉันมีบางสถานการณ์ที่หน้าจอเริ่มต้นทำงาน แต่ค่าแสงไฟยังคงเป็น 0,
ransh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.