Como definir permissões em / sys / permanente?


12

Estou iniciando o X como usuário e preciso definir o brilho do teclado /sys/class/leds/asus\:\:kbd_backlight/brightness. O /sys/diretório é recriado após a reinicialização, portanto, as permissões serão redefinidas também. Como faço para configurá-lo para não precisar 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.


2
Você pode colocar um comando em um serviço de inicialização systemd.
— precisa

Você pretende criar um próprio serviço systemd que defina as permissões? Ou você fala de um arquivo específico?
— xoned em 23/03/13

O antigo. "Serviço" é o termo systemd, embora nesse caso seja apenas um comando único e não um daemon. Você pode torná-lo um tipo de serviço "material diverso", como o rc.local está em sysV. Nesse caso, o serviço apenas executa um script de shell e você coloca o comando lá.
— Goldilocks

Respostas:


13

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

Mas, para o seu próprio problema, você pode configurar uma entrada sudo que permita que todos gravem nesse caminho, ou seja, 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"


Eu tentei isso, mas ele sempre pede a senha. Eu também tentei adicionar um NOPASSWD: atrás do (ALL).
— xonado em 29/03/2013

@Timo você pode tentar de novo? Veja minhas atualizações
— daisy

Agora está funcionando. O problema foi que minha entrada foi substituída por outra sem NOPASSWD. E aceitei sua resposta porque era mais fácil que as outras respostas. Obrigado a todos.
— xoned em

Estou usando o linux Mint Debian no sony vaio e tentando criar um arquivo /sys/devices/platform/sony-laptop/kbd_backlightpara controlar a luz de fundo do teclado. Alterei o caminho no seu código que leva a este erro: bash: syntax error near unexpected token ('' O comando que eu digitei é ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightPor favor, ajude
— Indra

Não consegui fazer isso funcionar em uma máquina Ubuntu até adicionar uma vírgula entre /usr/bin/teee /sys/class.... Depois de uma breve olhada na gramática man sudoers, suspeito que a vírgula seja necessária.
— Sage Mitchell

4

O /sysdiretório no Linux é falso, é uma visão do kernel vestido como arquivos. Portanto, alterar permissões permanentemente significa hackear o kernel, e isso seria desaconselhável. Como dizem os comentários, talvez uma systemdunidade que defina isso seja uma solução (em geral, defina a alteração como parte do processo de inicialização).


4

Eu tive um problema semelhante, precisava definir as permissões antes de executar o serviço concordado. Após o comentário de goldilocks, 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

Geralmente, este é o caminho a percorrer quando é necessário conceder acesso de gravação a / sys / caminhos específicos? Meu caso de uso é definir o brilho da luz de fundo da tela no meu laptop.
— Richrd

Eu acho que é porque o caminho do sistema é recriado a cada inicialização. Mas não sou especialista o suficiente para ter certeza disso.
— precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.