第 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
文件格式文档的手册页。