Permitir acesso de usuários sem privilégios a arquivos privilegiados específicos

Permitir acesso de usuários sem privilégios a arquivos privilegiados específicos

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 roote 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/tempe /sys/class/power_supply/BAT1/ueventestá 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 rootacesso 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/thermale 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 -alhos 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.

informação relacionada