Impossible d'écrire dans un fichier / sys / class / backlight / acpi_video0 / luminosité (ubuntu)

16

J'essaie de changer la luminosité en écrasant la valeur de ce fichier:

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

Cela ne fonctionne pas même lorsque vous utilisez sudo. Cependant, si je passe en super-utilisateur avec su, cela fonctionne. Pourquoi donc?


la source
Cette action est réservée aux utilisateurs sudo uniquement. J'ai trouvé une réponse dans ce commentaire :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

Réponses:

17

L'erreur se produit car sudo élève les autorisations pour la commande ( sudo echo 5) mais pas la redirection pour écrire le fichier ( > /sys/class/backlight/acpi_video0/brightness). Le shell bash réel a besoin d'une autorisation pour écrire, c'est pourquoi il échoue avec sudo mais fonctionne en tant que root.

Vous pouvez contourner cela en exécutant la teecommande en tant que root pour écrire dans le fichier:

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

Notez que cela fera également écho "5" à votre terminal. Il s'agit d'un effet secondaire normal de la teecommande.

mguymon
la source
Nous remercions @duskwuff pour la teesolution intelligente
mguymon
5
Je ne peux pas m'attribuer le mérite d'avoir inventé cela - c'est un peu du folklore UNIX que j'ai récupéré de qui sait où.
duskwuff -inactive-
1
ne fonctionne pas pour moi avec / sys / class / drm / card0 / device / pp_sclk_od ne peut pas changer la valeur
alexela
5

Comme écrit dans le wiki Arch ( lien ), par défaut, seul rootpeut changer la luminosité par cette méthode. Pour permettre aux utilisateurs du videogroupe de modifier la luminosité, une udevrègle telle que la suivante peut être utilisée (remplacez la <vendor>par votre ID de fournisseur. Par exemple 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"

Ensuite, vous devez ajouter votre utilisateur au videogroupe.

usermod -aG video <user>

Après cela, cela devrait fonctionner:

echo 5 > /sys/class/backlight/<vendor>/brightness
Manuel Schmitzberger
la source
1
Cette méthode fonctionne pour moi, après son remplacement acpi_video0par intel_backlight.
Mehdi
1
Merci pour vos commentaires. J'ai mis à jour la réponse.
Manuel Schmitzberger
2

Si vous ne voulez pas que 5 soit répété, cela fonctionne également:

sudo sh -c 'echo 5 > /sys/class/backlight/acpi_video0/brightness'
raphael
la source
0

Je me bats avec ce problème sur mon VAIO VPCEG depuis un bon moment. Après avoir fait tout ce qui est mentionné dans chaque forum, j'ai trouvé quelque chose d'intéressant:

Après avoir changé le paramètre de démarrage acpi_osi=Linux acpi_backlight=vendoret essayé de changer manuellement /sys/class/backlight/[vendor - in my case intel_backlight]/brightness, j'ai réalisé que changer l'autorisation de ce fichier de root à mon utilisateur et redémarrer le service acpid, cela me permettrait d'utiliser parfaitement les touches de luminosité.

user273880
la source
-1

les solutions ci-dessous fonctionnent bien pour moi ..

je le poste comme réponse pour que d'autres puissent obtenir de l'aide:

changer l'autorisation:

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

maintenant changer la luminosité:

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

dans votre cas ce serait: /sys/class/backlight/acpi_video0/brightness

noobdeveloper99
la source
1
Bienvenue sur Super User! Veuillez ne pas ajouter "merci" comme réponses. Investissez un peu de temps dans le site et vous obtiendrez des privilèges suffisants pour voter positivement sur les réponses que vous aimez, ce qui est la façon dont Super User vous remercie.
DavidPostill
De plus, vous n'avez pas vraiment répondu à la question, qui était "Pourquoi est-ce?"
DavidPostill
merci beaucoup .. pour l'information et vraiment désolé .. juste à cause de moi .. vous avez perdu votre temps important pour me guider .. je ferai en sorte que cela ne se reproduise plus
noobdeveloper99
Ce n'est pas une bonne pratique de permettre à tout le monde de lire et d'écrire un fichier de configuration système comme celui-ci.
lindhe
J'ai quelques scénarios, où l'écran commence à fonctionner, mais la valeur de rétro-éclairage est toujours 0,
ransh