Gnome3

如何在 NixOS 中自動解鎖 GNOME 密鑰環?

  • June 10, 2019

我在 NixOS 16.09 上使用 GNOME 3,但我無法弄清楚如何在登錄時自動解鎖“登錄”密鑰環。

我懷疑這可以通過該security.pam.services選項來解決,但我不是專家,並且文件不是很冗長或清晰:

此選項定義 PAM 服務。服務通常對應於使用 PAM 的程序,例如loginpasswd。該集合的每個屬性都定義了一個 PAM 服務,屬性名稱定義了服務的名稱。

*類型:*子模組的列表或屬性集

預設: [ ]

一個相關但不太重要的問題是,如果我在 NixOS 下創建一個新使用者帳戶並使用 GNOME 登錄,則不會自動創建密鑰環。第一次在某處輸入密碼並接受將其保存在密鑰環中時,我會收到一個對話框,要求輸入密碼以創建新的預設密鑰環:

選擇新密鑰環的密碼

應用程序想要創建稱為“預設密鑰環”的新密鑰環。選擇您要使用的密碼。

請注意,它想創建一個名為“預設密鑰環”的密鑰環,而不是像 Ubuntu 那樣的“登錄”。

如果我輸入我的登錄密碼,就會創建密鑰環,但在下次登錄時它不會自動解鎖,並且在我第一次嘗試使用它時會被要求輸入密碼。


是一個關於 KDE 錢包的類似問題,到目前為止還沒有公認的答案。


Nixpkgs 報告了一個相關問題。

此問題已在 19.03中修復。如果登錄管理器是 GDM,則設置配置選項

{ # ...
 security.pam.services.gdm.enableGnomeKeyring = true;
}

有人建議,如果不使用登錄管理器,則需要設置以下選項:

{ # ...
 services.gnome3.gnome-keyring.enable = true;
}

您可以使用該security.pam.services.<name?>.text選項。

添加到您的配置中:

pam.services = [
 { name = "gnome_keyring"
   text = ''
     auth     optional    ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so
     session  optional    ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so auto_start

     password  optional    ${gnome3.gnome_keyring}/lib/security/pam_gnome_keyring.so
   '';
 }
];

這將添加必要的 pam 條目/etc/pam.d

$ cat /etc/static/pam.d/gnome_keyring

auth     optional    /nix/store/ffcm7771dvva2xs56dzp6avxzf0pg35x-gnome-keyring-3.20.0/lib/security/pam_gnome_keyring.so
session  optional    /nix/store/ffcm7771dvva2xs56dzp6avxzf0pg35x-gnome-keyring-3.20.0/lib/security/pam_gnome_keyring.so auto_start

password        optional        /nix/store/ffcm7771dvva2xs56dzp6avxzf0pg35x-gnome-keyring-3.20.0/lib/security/pam_gnome_keyring.so

引用自:https://unix.stackexchange.com/questions/344402