Eu tenho um sistema rodando endurecidoGentooe eu instaleiXorg,Caixa de fluxo, eConkyjuntos para criar uma área de trabalho mínima do gerenciador de janelas. Dentro deste sistema, tenho 2 usuários principais root
e meu usuário normal em execução, no qual faço login.
O problema é que Conky está tentando acessar informações térmicas e da bateria internamente /sys/class/thermal/thermal_zone1/temp
e /sys/class/power_supply/BAT1/uevent
está obtendo erros de permissão negada, resultando em dados que eu gostaria de exibir aparecendo vazios ou como valores zero. Estes são os valores de permissão em ambos os arquivos
File: '/sys/class/thermal/thermal_zone0/temp'
Size: 4096 Blocks: 0 IO Block: 4096 regular file
Device: 12h/18d Inode: 3719 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-14 20:14:54.143855495 +0000
Modify: 2015-03-14 20:14:54.143855495 +0000
Change: 2015-03-14 20:14:54.143855495 +0000
Birth: -
File: '/sys/class/power_supply/BAT1/uevent'
Size: 4096 Blocks: 0 IO Block: 4096 regular file
Device: 12h/18d Inode: 3907 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-14 19:23:15.227055847 +0000
Modify: 2015-03-14 19:23:15.227055847 +0000
Change: 2015-03-14 19:23:15.227055847 +0000
Birth: -
Existe uma maneira de permitir que Conky acesse arquivos privilegiados específicos sem conceder root
acesso a todo o processo via sudo
? Eu poderia configurar uma regra sudoers para permitir que ele fosse executado NOPASSWD
, mas conceder a Conky permissões completas de root não é o que eu gostaria de fazer.
De preferência, gostaria apenas de dar ao processo acesso de leitura a esses arquivos. Eu poderia simplesmente tornar esses arquivos legíveis sem efeitos colaterais negativos?
Editar: encontrei a raiz do problema. O problema não são os arquivos em si, pois eles já são legíveis mundialmente, é o diretório que os contém, que é apenas drwx pelo usuário. Haverá algum efeito colateral negativo se eu permitir que os diretórios /sys/class/thermal
e se tornem legíveis mundialmente?/sys/class/power_supply
/sys/class
Edit2: Acontece que um dos recursos de proteção impede que usuários normais acessem esses arquivos sem serem root. A razão pela qual cheguei a essa conclusão é que quando executo ls -alh
os diretórios como meu usuário normal, todos os sinalizadores rwx aparecem como pontos de interrogação mesmo depois de defini-los como 0704 (drwx---r--). Infelizmente, minha única opção agora é executar o Conky como root, através de uma regra NOPASSWD sudo para que o Fluxbox possa iniciá-lo sem complicações.
Responder1
Se eu estivesse na sua situação, consideraria usar facl's:
sudo setfacl -Rm u:1000:r /sys/class/
Onde 1000 é o UID do usuário sob o qual o conky é executado. O exemplo acima alteraria todos os arquivos em /sys/class para serem legíveis por qualquer processo executado no UID 1000, mas pode ser mais limitado se arquivos específicos forem selecionados.
Se você deseja apenas que os dois arquivos mencionados acima sejam legíveis:
sudo setfacl -m u:1000:rx /sys
sudo setfacl -m u:1000:rx /sys/class/
sudo setfacl -m u:1000:r /sys/class/thermal
sudo setfacl -m u:1000:r /sys/class/power_supply
Eu também tenho uma máquina executando um kernel reforçado do Gentoo e não tenho certeza de como ela lida com listas de controle de acesso. Atualizarei esta resposta após o teste.
Também tenho o conky em execução, mas não me lembro como contornei esses obstáculos de permissão.