Разрешить непривилегированным пользователям доступ к определенным привилегированным файлам

Разрешить непривилегированным пользователям доступ к определенным привилегированным файлам

У меня есть система, работающая в усиленном режимеГентуи я установилXorg,Флюксбокс, иКонкивместе, чтобы создать минимальный рабочий стол оконного менеджера. В этой системе у меня есть 2 основных пользователя rootи мой обычный работающий пользователь, под которым я вхожу.

Проблема в том, что Conky пытается получить доступ к информации о температуре и батарее изнутри /sys/class/thermal/thermal_zone1/tempи /sys/class/power_supply/BAT1/ueventполучает ошибки об отказе в доступе, в результате чего данные, которые я хотел бы отобразить, отображаются пустыми или в виде нулевых значений. Это значения разрешений для обоих файлов

  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: -

Есть ли способ разрешить Conky доступ к определенным привилегированным файлам, не предоставляя всему процессу rootдоступ через sudo? Я мог бы настроить правило sudoers, чтобы разрешить ему работать с NOPASSWD, но предоставление Conky полных прав root — это не то, что я хотел бы сделать.

Предпочтительно я хотел бы дать процессу только доступ на чтение этих файлов. Могу ли я просто сделать эти файлы доступными для чтения всем без негативных побочных эффектов?

Редактировать: Я нашел корень проблемы. Проблема не в самих файлах, поскольку они уже доступны для чтения всем, а в содержащем их каталоге, который доступен только пользователю drwx. Будет ли какой-либо негативный побочный эффект, если я разрешу и , /sys/class/thermalа /sys/class/power_supplyтакже /sys/classкаталогам стать доступными для чтения всем?

Edit2: Оказывается, одна из функций защиты не позволяет обычным пользователям получать доступ к этим файлам без прав root. Причина, по которой я пришел к такому выводу, заключается в том, что когда я запускаю ls -alhкаталоги как обычный пользователь, все флаги rwx отображаются как вопросительные знаки, даже после того, как я установил их на 0704 (drwx---r--). К сожалению, сейчас у меня есть только один вариант — запустить Conky как root с помощью правила sudo NOPASSWD, чтобы Fluxbox мог запустить его без проблем.

решение1

Если бы я был на вашем месте, я бы рассмотрел возможность использования facl:

sudo setfacl -Rm u:1000:r /sys/class/

Где 1000 — это UID пользователя, под которым запущен conky. Приведенный выше пример изменит все файлы в /sys/class так, чтобы они были доступны для чтения любым процессом, запущенным под UID 1000, но может быть более ограниченным, если выбраны определенные файлы.

Если вы просто хотите, чтобы два файла, упомянутых выше, были доступны для чтения:

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

У меня также есть машина, работающая под управлением защищенного ядра Gentoo, и я не уверен, как она обрабатывает списки контроля доступа. Я обновлю этот ответ после тестирования.

У меня тоже работает Conky, но я не помню, как мне удалось обойти эти препятствия с разрешениями.

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