允許非特權使用者存取特定特權文件

允許非特權使用者存取特定特權文件

我有一個運行強化的系統根圖我已經安裝了奧格,通量盒, 和康基一起建立一個最小的視窗管理器桌面。在這個系統中,我有 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以普通使用者身分在目錄上運行時,即使將它們設為 0704 (drwx---r--),所有 rwx 標誌仍顯示為問號。不幸的是,我現在唯一的選擇是透過 NOPASSWD sudo 規則以 root 身分執行 Conky,這樣 Fluxbox 就可以輕鬆啟動它。

答案1

如果我處於你的情況,我會考慮使用 facl's:

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

其中 1000 是運行 conky 的使用者的 UID。上面的範例會將 /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 運行,但我不記得我是如何繞過這些權限障礙的。

相關內容