У меня есть система, работающая в усиленном режимеГентуи я установил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, но я не помню, как мне удалось обойти эти препятствия с разрешениями.