Can't write to file /sys/class/backlight/acpi_video0/brightness (ubuntu)

The error happens because sudo elevates permissions for the command (sudo echo 5) but not the redirection to write the file (> /sys/class/backlight/acpi_video0/brightness). The actual bash shell needs permission to write, which is why it fails with sudo but works as root.

You can work around this by running the tee command as root to write to the file:

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

Note that this will also echo "5" to your terminal. This is a normal side effect of the tee command.

As written in the Arch wiki (link), by default, only root can change the brightness by this method. To allow users in the video group to change the brightness, a udev rule such as the following can be used (replace the <vendor> with your vendor id. E.g. 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"

Then you need to add your user to the video group.

usermod -aG video <user>

After that this should work:

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

If you didn't want 5 to be echoed this also works:

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