Como escrever para / sys / com um script após a reinicialização? (sudo)

1

Estou tentando gravar em /sys/class/backlight/intel_backlight/brightness e ler /sys/class/backlight/intel_backlight/max_brightness de um script que escrevi. O problema é que ele requer raiz, e mesmo se eu chown ou chmod , as permissões são redefinidas após a reinicialização.

Eu vi uma solução para adicionar algo como:

user ALL = NOPASSWD: /sys/class/backlight/intel_backlight/brightness

usando visudo , mas não funciona. Quais outras opções eu tenho?

    
por Zhinkk 16.01.2017 / 02:29

1 resposta

3

Os arquivos em /sys não são arquivos físicos no disco. Eles são arquivos virtuais que permitem acessar informações no seu kernel ativo. O impacto prático disso é que executar chown , chmod , etc. neles é uma operação efêmera, como você descobriu. Toda a visualização do sistema de arquivos em /sys é gerada pelo kernel quando o sistema é inicializado, portanto não há como fazer alterações persistentes.

A solução mais fácil é executar o seu script como root. Usando sudo é uma solução comum. Você precisaria dar ao seu usuário a capacidade de executar seu script como root. Por exemplo, se o seu script estiver instalado como /usr/local/bin/configure-brightness , você poderá criar /etc/sudoers.d/brightness com o seguinte conteúdo:

yourusername ALL=(ALL) NOPASSWD:/usr/local/bin/configure-brightness

Este arquivo ( /etc/sudoers.d/brightness ) deve pertencer a root e ter o modo 440 .

Com esta configuração, você pode executar:

sudo /usr/local/bin/configure-brightness

... e o script será executado como root , o que significa que ele poderá ler / gravar em arquivos em /sys .

    
por 16.01.2017 / 04:31