Como definir permissões em / sys / permanent?

10

Estou começando o X como usuário e preciso definir o brilho do meu teclado em /sys/class/leds/asus\:\:kbd_backlight/brightness . O diretório /sys/ é recriado após a reinicialização, portanto, as permissões serão redefinidas também. Como faço para configurá-lo para que eu não precise tornar o arquivo gravável por todos os usuários após cada inicialização?

Estou usando o Archlinux com o SDDM como gerenciador de login e o KDE como DE.

    
por xoned 23.03.2013 / 14:44

3 respostas

10

Não, você não pode, a permissão do sysfs é definida no espaço do kernel e não pode ser alterada com ferramentas do espaço do usuário (a menos que haja suporte no lado do kernel).

Mas, para o seu próprio problema, você pode configurar uma entrada sudo que permita que todos escrevam nesse caminho, por exemplo, ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

E quando você escreve nesse diretório, use um script como este, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"

    
por 28.03.2013 / 02:36
4

O diretório /sys no Linux é falso, é uma visão do kernel vestida como arquivos. Então, mudar permissões permanentemente significa hackar o kernel, e isso seria um mau conselho. Como dizem os comentários, talvez uma configuração systemd unit seja uma solução (em geral, defina a mudança como parte do processo de inicialização).

    
por 23.03.2013 / 19:06
1

Eu tive um problema semelhante, precisei definir as permissões antes de executar o serviço nodered. Seguindo o comentário de goldilocks eu criei este script 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

Depois de escrever o arquivo de serviço, eu o habilitei com

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
    
por 08.12.2017 / 18:10