![什么是 ConsoleKit 和 PolicyKit?它们如何工作?](https://linux22.com/image/478/%E4%BB%80%E4%B9%88%E6%98%AF%20ConsoleKit%20%E5%92%8C%20PolicyKit%EF%BC%9F%E5%AE%83%E4%BB%AC%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我发现最近的 GNU/Linux 正在使用 ConsoleKit 和 PolicyKit。它们是做什么用的?它们如何工作?
最佳答案应该解释每个人试图解决什么样的问题,以及他们如何解决它。
我是 GNU/Linux 的长期用户,从那时起,这些东西还不存在。我一直在使用 Slackware,最近还使用 Gentoo。我是一名高级用户/管理员/开发人员,因此答案可以(而且应该!)尽可能详细和准确。我想了解这些东西是如何工作的,这样我就可以以最好的方式使用它们(作为用户或开发人员)。
答案1
控制台工具包(文档)是一项跟踪用户会话(即用户登录的位置)的服务。它允许在不注销的情况下切换用户(多个用户可以在一个用户处于活动状态的情况下同时登录到同一硬件)。它还用于检查会话是否是“本地”,即用户是否可以直接访问硬件(这可能被认为比远程访问更安全)。
目前 ConsoleKit 大部分被替换为已登录,这是一部分系统,虽然有独立版本埃洛金德。
波尔基特(原名PolicyKit) 文档允许在桌面环境中微调功能。传统上只有特权用户(root)才被允许配置网络。然而,在服务器环境中,可以合理地假设,例如,不允许连接到笔记本电脑上的热点会受到太大限制。但是,您可能仍然不想向此人授予完全权限(例如安装程序),或者可能希望限制某些人的选项(例如,在您的孩子笔记本电脑上,只能使用带有家长过滤器的“受信任”网络)。据我记得它的工作原理如下:
- 程序通过 dbus 向守护进程发送有关操作的消息
- 守护进程使用 polkit 库/配置(实际上是 polkit 守护进程)来确定是否允许用户执行操作。可能会发生必须满足某些条件的情况(例如输入密码或硬件访问)。
- 守护进程根据它执行操作(返回身份验证错误或执行操作)