/* TODO: right now the time the temporary authorization is kept is hard-coded - we
* could make it a propery on the PolkitBackendInteractiveAuthority class (so
* the local authority could read it from a config file) or a vfunc
* (so the local authority could read it from an annotation on the action).
*/
expiration_seconds = 5 * 60;
在
systemd
相关实用程序中,可能需要特权访问的操作通过 PolicyKit 进行路由。pkaction
不带任何参数运行以查看 PolicyKit 处理的所有可能操作的列表。要查看特定操作的当前策略,请使用pkaction --verbose --action-id <action identifier
。例如,更改主机名:因此,我系统上用于更改主机名的当前策略是
auth_admin_keep
- 也就是说,需要管理员的密码,除非用户最近成功通过了类似的检查(就像sudo
它可以避免连续的密码请求一样)。谁是管理员,其密码可以授权这些操作?在我的 Debian 9 系统上,这是由目录中的文件决定的
/etc/polkit-1/localauthority.conf.d/
- 默认情况下,只有 root 和sudo
用户组的成员才有资格。如果您不喜欢这个策略,您可以通过编写一些自定义 PolicyKit 配置文件来轻松更改它。
PolicyKit 可以配置为对它管理的任何操作要求以下任何“安全级别”:
yes
- 用户可以随时做到,不问任何问题auth_self_keep
- 如果用户最近没有做任何需要密码检查的事情,请求用户的密码以确保它真的是他/她。如果在几分钟的窗口内执行了此级别的多个连续操作,则可以跳过第一个之后的检查。auth_self
- 总是要求用户的密码检查auth_admin_keep
- 需要管理员用户的密码。就像auth_self_keep
,在输入一次密码(以及可选的管理员用户名)后,用户可以在短暂的时间窗口内执行该级别的多个操作,而无需进一步的密码请求auth_admin
- 始终需要密码检查,响应密码检查的用户必须是管理用户之一no
- 该行动被拒绝,没有任何进一步的问题。维护结果的时间
..._keep
显然是在 PolicyKit 上游代码中硬编码的:这里是 PolicyKit Git 的链接。目前似乎没有任何规定可以在运行时配置此值,也没有在设置后扩展身份验证时间戳。
OpenSuSE 似乎已经扩展了这一点
...keep_session
并取得了...keep_always
成果。显然,他们还重新解释了这些...keep
动作,以表示“只要询问过程继续运行,就记住结果”。