有没有办法让 polkit 代理默认为当前登录的用户?

有没有办法让 polkit 代理默认为当前登录的用户?

是否有人知道如何配置 polkit-gnome-authentication-agent-1 以在处理请求时最初默认为当前用户,或者其他 polkit 代理之一是否具有此功能?


当使用类似的代理执行 polkit 操作进行身份验证时polkit-gnome-authentication-agent-1,由于组中有多个用户,因此wheel我提供了一个下拉菜单来选择以哪个用户的身份进行身份验证。

这是一个令人恼火的额外步骤,因为在大多数情况下,我想要验证的用户是当前登录的用户*。我喜欢的行为是预先选择当前登录的用户,然后直接进入密码输入,并可以选择更改为其他用户(如果这是我想要的)。

我知道可以通过 polkit 规则来限制列表中出现的用户,但我对这些规则的简单理解是,它们会改变谁是允许对某些操作进行身份验证,而这种行为属于 polkit GUI 代理的范畴。或者我错了,默认选择是可以通过 polkit 规则设置的?

重申我不想改变哪些用户/组被允许通过身份验证来执行 polkit 操作,而只是希望通过最少的按键让 UI 移动得更快一些,而且绝对不会有啮齿动物。

* 我完全承认,对于大多数部署来说,这可能是最明智的行为,但对我来说,这很尴尬。

答案1

我设法解决这个问题的方法是添加一个自定义文件,并用以下几行来/etc/polkit-1/rules.d/命名,以覆盖:00-custom.rules50-default.rules

polkit.addAdminRule(function(action, subject) {
    if( subject.isInGroup("wheel") ) {
        return ["unix-user:"+subject.user];
    }
    else {
        return [polkit.Result.NO];
    }
});

这样,如果当前用户存在于wheel组中,则系统会提示其输入密码,否则提示其输入 root 密码。

相关内容