有沒有辦法讓 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 密碼。

相關內容