第 4 章 PolicyKit


PolicyKit 工具是一个框架,它提供了一个由特权程序(也称为 机制)使用的授权 API,为非特权程序(也称为 主题)提供服务。以下是有关 PolicyKit 或其系统名称 polkit 的更改的详情。

4.1. 策略配置

至于有关的新特性,授权规则现在在 JavaScript .rules 文件中定义。这意味着相同的文件被用来定义规则和管理员状态。在以前的版本中,此信息存储在两个不同的文件类型 - If pkla 和 If conf,它使用键/值对来定义额外的本地授权。
这些新的 .rules 文件存储在两个位置;而用于本地自定义的 polkit 规则存储在 /etc/polkit-1/rules.d/ 目录中,第三方软件包存储在 /usr/share/polkit-1/rules.d/ 中。
现有的 .conf.pkla 配置文件已被保留,并与 .rules 文件一起存在。polkit 已为 Red Hat Enterprise Linux 7 升级,并考虑了兼容性问题。
规则中的优先逻辑已改变。polkitd 现在从 /etc/polkit-1/rules.d/usr/share/polkit-1/rules.d 目录中以字典顺序读取 .rules 文件。如果两个文件的名称相同,则 /etc 中的文件会在 /usr 中的文件之前进行处理。另外,现有规则由 /etc/polkit-1/rules.d/49-polkit-pkla-compat.rules 文件应用。因此,它们可以被 /usr/etc 中的 .rules 文件覆盖,其名称以字典顺序排列在 49-polkit-pkla-compat 之前的名称。确保您的旧规则不被覆盖的最简单方法是在所有其它 .rules 文件的名称的开头使用大于 49 的数字。
下面是一个 .rules 文件的示例。它会创建一个规则,允许在系统设备上为 storage 组挂载文件系统。该规则存储在 /etc/polkit-1/rules.d/10-enable-mount.rules 文件中:

例 4.1. 允许在系统设备上挂载文件系统

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" &&
        subject.isInGroup("storage")) {
        return polkit.Result.YES;
    }
});

如需更多信息,请参阅:

  • polkit(8)- 有关 JavaScript 规则和优先级规则的手册页。
  • pkla-admin-identities(8)和 pkla-check-authorization(8)- 分别是 .conf.pkla 文件格式文档的手册页。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.