Flatpak 如何讓應用讀取系統程序?TL;DR: 不行。

6 分鐘閱讀

問這個問題是因為我想要讓 Discord Flatpak 版能抓到運行中的遊戲,然而並沒有弄成功。
若有人成功了希望能在下方回覆區跟我分享一下,我非常想知道。

琳 avatar

flatpak 我要開放使應用能「讀取已開啟的程式」的權限,請問是哪個權限,並給我指令

Felo Search avatar
Felo Search

Flatpak 應用程式預設在沙盒環境中執行,無法讀取系統中正在執行的程序列表。根據搜尋結果,這是 Flatpak 的安全設計,目的是隔離應用程式以提高系統安全性。

關於讀取系統程序的權限

根據搜尋結果1,Flatpak 應用程式無法直接讀取系統程序列表(即 /proc 目錄中的資訊)。這是因為:

  1. Flatpak 應用程式在沙盒中執行,預設無法存取沙盒外的程序2
  2. 這是 Flatpak 的安全設計之一,目的是限制應用程式的系統調用能力2

可能的解決方案

雖然 Flatpak 沒有直接提供「讀取系統程序列表」的單一權限選項,但您可以嘗試以下方法:

1. 使用 --filesystem=host 權限

這會給予應用程式對整個主機檔案系統的存取權限,包括 /proc 目錄:

flatpak override --filesystem=host 應用程式ID

請注意,這會給予應用程式非常廣泛的權限,可能會降低安全性。

2. 使用 Flatseal 圖形化工具

Flatseal 是一個圖形化工具,可以更方便地管理 Flatpak 應用程式的權限345

  1. 安裝 Flatseal:flatpak install flathub com.github.tchx84.Flatseal
  2. 開啟 Flatseal 並選擇您要修改的應用程式
  3. 在「檔案系統」區域中,啟用「全部檔案系統」或「主機檔案系統」選項

3. 使用 flatpak override 指令

您可以使用以下指令來開放特定目錄的存取權限46

flatpak override --filesystem=/proc 應用程式ID

注意事項

  1. 即使開放了 /proc 的存取權限,某些應用程式可能仍然無法正常讀取系統程序,因為 Flatpak 的沙盒機制還包含其他限制21

  2. 根據搜尋結果1,Flatpak 開發者認為讓應用程式讀取系統程序列表可能存在安全風險,因此不太可能在未來添加這項專門的權限

  3. 如果您需要這項功能,可能需要考慮使用非 Flatpak 版本的應用程式,或使用其他方式安裝該應用程式

  4. 開放過多權限會降低 Flatpak 的安全性優勢,請謹慎評估是否真的需要此權限7

如果您能分享您具體需要哪個應用程式讀取系統程序列表,可能會有更具體的解決方案。

請閱讀這篇 issue 了解更多。

  1. Permission to read system processes? Will it ever be added? ↩2 ↩3

  2. 沙箱权限- Flatpak 文档 ↩2 ↩3

  3. 使用Flatpak安裝Linux軟體,最常遇到的就是權限問題了 ...

  4. 無法開啟檔案?用Flatseal調整Linux Flatpak應用程式權限 ... ↩2

  5. 使用Flatseal 管理Flatpak 的权限 - LinuxStory

  6. How to give a Flatpak app access to a directory - Ask Ubuntu

  7. Flatpak: "home" access allows trivial privilege escalation, what ...



回覆

你可以使用 Mastodon 或其他 ActivityPub/Fediverse 帳號來公開回覆此文章。現有的公開回覆顯示在下方。

打開文章