如何在 NixOS 中自动解锁 GNOME 密钥环?

如何在 NixOS 中自动解锁 GNOME 密钥环?

我在 NixOS 16.09 上使用 GNOME 3,但我不知道如何使“登录”密钥环在登录时自动解锁。

我怀疑这可以通过以下方式解决security.pam.services选项,但我不是专家,并且文档不是很详细或清晰:

该选项定义 PAM 服务。服务通常对应于使用 PAM 的程序,例如登录或者密码。该集合的每个属性都定义一个 PAM 服务,属性名称定义服务的名称。

类型:子模块的列表或属性集

默认: [ ]

一个相关但不太重要的问题是,如果我在 NixOS 下创建一个新用户帐户并使用 GNOME 登录,则不会自动创建密钥环。当我第一次在某处输入密码并接受将其保存在密钥环中时,我会收到一个对话框,要求输入密码以创建新的默认密钥环:

选择新密钥环的密码

应用程序想要创建名为“默认密钥环”的新密钥环。选择您想要使用的密码。

请注意,它想要创建一个名为“默认密钥环”的密钥环,而不是像 Ubuntu 那样的“登录”。

如果我输入登录密码,则会创建密钥环,但下次登录时它不会自动解锁,并且在第一次尝试使用它时会要求我输入密码。


这里是一个关于 KDE Wallet 的类似问题,到目前为止还没有公认的答案。


有一个相关的问题为 Nixpkgs 报告。

答案1

这个问题是固定的19.03。如果登录管理器是 GDM,则设置配置选项

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

有人建议,如果不使用登录管理器,则需要设置以下选项:

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

答案2

您可以使用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

相关内容