什么是 ConsoleKit 和 PolicyKit?它们是如何工作的?

Den*_*aia 45 linux polkit consolekit

我看到最近的 GNU/Linux 正在使用 ConsoleKit 和 PolicyKit。它们是为了什么?它们是如何工作的?

最好的答案应该解释每个人试图解决什么样的问题,以及他们如何设法解决它。

我是 GNU/Linux 的长期用户,从那时起这些东西还不存在。我一直在使用 Slackware 和最近的 Gentoo。我是一名高级用户/管理员/开发人员,所以答案可以(并且应该!)尽可能详细和准确。我想了解这些东西是如何工作的,这样我就可以以最好的方式使用它们(作为用户或开发人员)。

Mac*_*tka 28

ConsoleKit文档)是一种跟踪用户会话(即用户登录的位置)的服务。它允许在不注销的情况下切换用户(多个用户可以在同一硬件上同时登录,一个用户处于活动状态)。它还用于检查会话是否为“本地”,即用户是否可以直接访问硬件(这可能被认为比远程访问更安全)。

目前 ConsoleKit 主要被logind取代,它是systemd 的一部分,尽管有独立版本elogind

polkit (née PolicyKit) 文档允许在桌面环境中进行微调功能。传统上只允许特权用户 (root) 配置网络。但是,在服务器环境中,可以合理地假设,例如,不允许连接到笔记本电脑上的热点会受到太多限制。但是,您可能仍然不想向此人授予完全权限(例如安装程序),或者可能想限制某些人的选项(例如,在您的儿童笔记本电脑上,只能使用带有家长过滤器的“受信任”网络)。据我记得它的工作原理是:

  • 程序通过 dbus 向守护程序发送有关操作的消息
  • 守护程序使用 polkit 库/配置(实际上是 polkit 守护程序)来确定是否允许用户执行操作。可能需要满足某些条件(例如输入密码或硬件访问)。
  • 守护进程根据它执行操作(返回身份验证错误或执行操作)