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

2

Eu tenho um sistema rodando o Gentoo e instalei Xorg , Fluxbox e Conky juntos para criar um desktop mínimo gerenciador de janelas. Dentro deste sistema eu tenho 2 usuários principais, root e meu usuário normal em execução no qual eu me conecto.

O problema é que o Conky está tentando acessar informações térmicas e de bateria de /sys/class/thermal/thermal_zone1/temp e /sys/class/power_supply/BAT1/uevent e está recebendo permissão de erros negados, resultando em dados que gostaria de exibir, mostrando valores vazios ou 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 o Conky acesse arquivos privilegiados específicos sem conceder todo o processo root access via sudo ? Eu poderia configurar uma regra de sudoers para permitir que ele fosse executado com NOPASSWD , mas dar permissões de raiz completa do Conky 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?

Edit: Eu encontrei a raiz do problema. Não são os arquivos deles mesmos que são o problema, já que eles já são legíveis por todo o mundo, é o diretório deles que contém apenas drwx por usuário. Haverá algum efeito colateral negativo se eu permitir que os diretórios /sys/class/thermal e /sys/class/power_supply , bem como /sys/class , se tornem legíveis em todo o mundo?

Edit2: Descobre-se que um dos recursos de proteção impede que usuários normais acessem esses arquivos sem ser root. A razão pela qual cheguei a essa conclusão é quando executo ls -alh nos diretórios como meu usuário normal, todos os sinalizadores rwx aparecem como pontos de interrogação mesmo depois de configurá-los para 0704 (drwx --- r--). Minha única opção agora, infelizmente, é executar o Conky como root, via uma regra de sudo NOPASSWD, para que o Fluxbox possa iniciá-lo sem problemas.

    
por user428531 15.03.2015 / 04:19

1 resposta

0

Se eu estivesse na sua situação, eu consideraria o uso do facl:

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 sob o UID 1000, mas pode ser mais limitado se arquivos específicos forem selecionados.

Se você quiser 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 rodando um kernel endurecido pelo Gentoo e não tenho certeza de como ele lida com as listas de controle de acesso. Eu atualizarei esta resposta após o teste.

Eu também tenho o conky funcionando, mas não consigo me lembrar de como passei por esses obstáculos de permissão.

    
por 28.04.2015 / 15:45