![pkexec - 在编写 pkexec 策略时如何为 auth_admin_keep 设置自定义超时](https://linux22.com/image/123324/pkexec%20-%20%E5%9C%A8%E7%BC%96%E5%86%99%20pkexec%20%E7%AD%96%E7%95%A5%E6%97%B6%E5%A6%82%E4%BD%95%E4%B8%BA%20auth_admin_keep%20%E8%AE%BE%E7%BD%AE%E8%87%AA%E5%AE%9A%E4%B9%89%E8%B6%85%E6%97%B6.png)
我刚刚在 freedesktop.org 上阅读 David Z 为 pkexec 编写的参考手册:
https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
和
https://www.freedesktop.org/software/polkit/docs/latest/pkexec.1.html
手册说,使用 auth_admin_keep 选项只会将您的密码保留 5 到 15 分钟,如果我们想设置自定义超时,我们可以编写自定义规则。
有人知道我如何编写超时的自定义规则吗?我尝试按照手册进行操作,但我不是编码员,我无法理解 Syntax,也没有提到与超时相关的 Syntax。
答案1
不幸的是,PolicyKit 上游源代码中的超时似乎被硬编码为 5 分钟,在文件中src/polkitbackend/polkitbackendinteractiveauthority.c
。
第 3231-3236 行写道:
/* 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;
因此,超时在源代码中设置为 5 分钟,目前没有规定可以在不重新编译 PolicyKit 相应部分的情况下更改它。
另一方面,OpenSuSE Leap 15 似乎扩展了这个功能。他们似乎将这些操作重新解释..._keep
为“在询问过程运行时记住身份验证”,并添加了..._keep_session
“..._keep_always
记住整个特定登录会话”和“永远记住”操作。