Linux

什麼是 ConsoleKit 和 PolicyKit?它們是如何工作的?

  • April 21, 2020

我看到最近的 GNU/Linux 正在使用 ConsoleKit 和 PolicyKit。它們是乾什麼用的?它們是如何工作的?

最好的答案應該解釋每個人試圖解決什麼樣的問題,以及他們如何設法解決它。

我是一個長期的 GNU/Linux 使用者,從那時起這些東西還不存在。我一直在使用 Slackware 和最近的 Gentoo。我是高級使用者/管理員/開發人員,因此答案可以(而且應該!)盡可能詳細和準確。我想了解這些東西是如何工作的,所以我可以以最好的方式使用它們(作為使用者或開發人員)。

ConsoleKit文件)是一種跟踪使用者會話(即使用者登錄的位置)的服務。它允許在不註銷的情況下切換使用者(許多使用者可以在一個使用者處於活動狀態的情況下同時登錄同一硬體)。它還用於檢查會話是否為“本地”,即使用者是否可以直接訪問硬體(這可能被認為比遠端訪問更安全)。

目前,ConsoleKit 在很大程度上被logind所取代,它是systemd的一部分,儘管有獨立版本elogind

polkit (née PolicyKit) 文件允許在桌面環境中微調功能。傳統上,只允許特權使用者(root)配置網路。然而,在伺服器環境中,一個合理的假設是限制太多,不允許連接到筆記型電腦上的熱點。但是,您可能仍然不想授予此人全部權限(例如安裝程序),或者可能希望限制某些人的選項(例如,在您的孩子筆記型電腦上,只能使用帶有父母過濾器的“受信任”網路)。據我記得它的工作原理是:

  • 程序通過 dbus 向守護程序發送有關操作的消息
  • 守護程序使用 polkit 庫/配置(實際上是 polkit 守護程序)來確定是否允許使用者執行操作。可能需要滿足某些條件(例如輸入密碼或硬體訪問)。
  • 守護程序根據它執行動作(返回認證錯誤或執行動作)

引用自:https://unix.stackexchange.com/questions/5220