如何防止用户将其密码更改为最后 X 个密码之一?

9 gnome security password

我有一个带有 GNOME 3.18 系统的 Ubuntu GNOME 15.10,我想设置它以便使用它的用户无法将新密码设置为以前的 X 密码之一,如何实现?

当我更改密码时,如果它与我上次的密码太相似,我的系统不允许我将其更改为该密码,如果答案还可以显示如何扩展它以便新密码也无法更改,那就太好了太类似于以前的 X 记录的密码。

注意:最后 X 密码的历史记录不应以不安全的未加密方式存储,事实上,它们可能应该以与当前密码的存储方式相同或相似的方式存储(作为加盐哈希)。

我曾经X表示密码的数量(这可以是任何值),因为我希望能够轻松更改无法使用的存储密码数量,并且其他人也可以轻松地获得答案并使用它希望而不是有一个围绕 的非常设定的值的答案X

信息更新:

根据这里的要求是我的(不包括顶部的评论)/etc/pam.d/common-password文件的内容:

# here are the per-package modules (the "Primary" block)
password        [success=1 default=ignore]      pam_unix.so obscure sha512
# here's the fallback if no module succeeds
password        requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password        required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
password        optional        pam_gnome_keyring.so
# end of pam-auth-update config
Run Code Online (Sandbox Code Playgroud)

dal*_*y42 17

您可以配置 PAM 来为您执行此操作。只需打开/etc/pam.d/common-password并附use_authtok加到第一password行(调用 pam_unix 模块的那一行),使其看起来有点像这样:

password    [success=1 default=ignore]  pam_unix.so obscure sha512 use_authtok
Run Code Online (Sandbox Code Playgroud)

现在在先前修改的行上方添加此行:

password    required    pam_pwhistory.so  remember=X
Run Code Online (Sandbox Code Playgroud)

哪里X是您想要检查重复密码的先前密码的数量。

这里以前的X密码将以散列形式存储在该位置/etc/security/opasswd

因此,当且仅当文件不存在时才需要创建该文件并为其分配权限 600 ( -rw-------):

sudo touch /etc/security/opasswd
sudo chmod 600 /etc/security/opasswd
Run Code Online (Sandbox Code Playgroud)

  • @ParanoidPanda 这将是因为 gnome-control-center 中的糟糕编程,而不是因为这不起作用。PAM 配置绝对是做到这一点的最佳方式。 (2认同)