polkit 使用 javascript 编写的规则文件进行配置。
您编写自定义函数,并将它们作为参数传递给polkit.addRule()
. 当执行 polkit 操作时,函数会按顺序调用,直到返回结果。(否则使用默认值)。
使用两个参数调用您的规则函数: 的名称action
和一个subject
对象。
您可以使用subject.isInGroup("wheel")
来测试用户是否在“wheel”组中。
polkit 默认使用用户是否是“管理员”的概念。这个概念的含义可以使用 polkit.addAdminRule() 以一种有点奇怪的方式进行修改。此默认值因发行版而异。在某些发行版中,管理员被放置在“wheel”组中。在其他发行版中,“sudo”组被认为是管理员。
是否可以以可移植的方式为 polkit.addRule() 编写一个函数,该函数测试主题是否在发行版的管理员组中,而不是对“wheel”或“sudo”组进行硬编码?
这不可能。
这不是一种非常常见的安全策略类型——无论是对于 polkit 还是其他任何东西。很多东西要么使用组,要么使用 polkit 密码提示。
我只注意到 PackageKit 使用了这种类型的策略。(我猜管理员组是由发行版指定的,当它编译 PackageKit 时)。