Разрешить службе systemd доступ к /sys/…/energy_uj - правило udev, меняющее владельца, не имеет никакого эффекта?

Разрешить службе systemd доступ к /sys/…/energy_uj - правило udev, меняющее владельца, не имеет никакого эффекта?

Я хотел бы собрать данные об использовании мощности моего процессора на некоторых «простых» Linux-компьютерах (т. е. без всяких наворотов вроде виртуальных машин или, тем более, K8) с помощью scaphandre или prometheus_node_exporter, запущенных как служба systemd, а не как root.

Проблема: /sys/…/energy_ujпредоставленный модулем ядра объект intel_rapl_commonпо умолчанию принадлежит пользователю root и имеет режим 0400.

Мой первый подход был таким:

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

Хотя это и работает (systemd, по-видимому, «создает» эфемерную (основную) группу только на основе существования этого служебного файла, который может использоваться командой chmod), мне бы хотелось более чистого подхода.

Итак, я создал необходимые записи в /usr/lib/sysusers.d/, /usr/lib/modules-load.d/чтобы иметь группу powercapи автоматически загружать модуль ядра, а также добавил правило udev:

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

но это правило, похоже, не имеет никакого эффекта, разрешения и владелец всех связанных папок такие же, как и прежде. Однако, похоже, что правило применяется правильно, потому что когда я делаю:

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 {} +"

это правило работает. Но такое ощущение, что я регрессировал к изначальному решению на основе systemd/ExecStartPre.

Итак, извините, я задам два вопроса как один:

  • Есть ли способ создать «чистое» правило udev без PROGRAMизменения прав доступа и владельца?
  • Или, в качестве альтернативы, есть ли другой, столь же «чистый» способ получить разрешения на чтение?

Связанный контент