Permitir que um serviço systemd acesse /sys/…/energy_uj - a alteração da regra do udev não tem efeito?

Permitir que um serviço systemd acesse /sys/…/energy_uj - a alteração da regra do udev não tem efeito?

Eu gostaria de coletar o uso de energia da minha CPU em algumas caixas Linux "simples" (ou seja, sem coisas sofisticadas como VMs ou muito menos K8s) via scaphandre ou prometheus_node_exporter, executando como serviço systemd e não como root.

O problema: os /sys/…/energy_ujmódulos expostos pelo kernel intel_rapl_commonsão, por padrão, propriedade do root e do modo 0400.

Minha primeira abordagem foi

ExecStartPre=-+/usr/bin/modprobe intel_rapl_common
ExecStartPre=+/usr/bin/find /sys/devices/virtual/powercap -name energy_uj -exec chmod g+r -R {} + -exec chown root:powercap {} +
DynamicUser=yes
Group=powercap

Embora isso funcione (o systemd aparentemente "cria" um grupo efêmero (primário) apenas com base na existência desse arquivo de serviço, que pode ser usado pelo chmod), eu gostaria de uma abordagem mais limpa.

Então, criei as entradas necessárias /usr/lib/sysusers.d/para /usr/lib/modules-load.d/ter um grupo powercape carregar o módulo do kernel automaticamente, e também adicionei uma regra do udev:

ENV{SUBSYSTEM}=="powercap", ACTION=="add|change", MODE="0440", OWNER="root", GROUP="powercap"

mas esta regra parece não ter efeito, as permissões e o proprietário de todas as pastas relacionadas são como antes. Porém, parece que a regra é aplicada corretamente, pois quando o faço:

ENV{SUBSYSTEM}=="powercap", ACTION=="add|change", OWNER="root", PROGRAM+="/usr/bin/find /sys$env{DEVPATH} -name energy_uj -exec chmod g+r -R {} + -exec chown root:powercap {} +"

essa regra funciona. Mas parece que regredi à solução original baseada em systemd/ExecStartPre.

Então, desculpe, estou fazendo duas perguntas ao mesmo tempo:

  • Existe uma maneira de criar a regra "limpa" do udev sem PROGRAMalterar permissões e propriedade?
  • Ou, alternativamente, existe outra maneira "limpa" de obter permissões de leitura?

informação relacionada