Show Table of Contents
第 4 章 PolicyKit
“
PolicyKit”实用工具是一个框架,它提供了一个为无特权程序 subjects 提供服务的特权程序(mechanisms)使用的授权 API。“PolicyKit”的相关变化或者它的系统名称“polkit”所历经的细节改变如下。
4.1. 策略配置
就这些新的特点而言,它们的授权规则现在是在 JavaScript .rules 文件中定义的。这就意味着同样的文件被用来同时定义规则以及管理员状态。这些信息之前被储存在两个不同的文件类型—
*.pkla 和 *.conf 中,它们通过使用键值对,来定义额外的本地授权。
这些新的 .rules 文件储存在两个位置;但是本地配置的“
polkit”规则是储存在 /etc/polkit-1/rules.d/ 目录下的,第三方软件包则储存在 /usr/share/polkit-1/rules.d/ 中的。
目前的
.conf 和 .pkla 配置文件与 .rules 文件保存在一起,并同时存在。考虑到兼容性的问题,红帽企业版 Linux 7 中的“polkit”进行了升级。
规则的逻辑优先级也发生了变化。“
polkitd”现在按照字母顺序从 /etc/polkit-1/rules.d 和 /usr/share/polkit-1/rules.d 目录中读取 .rules 文件。如果有两个名字相同的文件,相较于 /usr 中的文件,/etc 中的文件则将优先进行处理。除此之外,/etc/polkit-1/rules.d/49-polkit-pkla-compat.rules 文件应用现有规则。因此,只要文件名在字母顺序中排在 49-polkit-pkla-compat 之前,它们就可以由 .rules 在/usr 或者 /etc 中重写。确定您的旧规则没被改写的最简单的方法就是命名所有其它 .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文件格式的资料说明手册页。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.