在全新的 Arch Linux 安装中,我试图要求用户在首次登录时更改密码。我使用 使密码过期passwd --expire username
,但用户无法再登录。显示此消息:
You are required to change your password immediately (administrator enforced)
Authentication token manipulation error
几秒钟后,它返回到登录提示。
是什么原因导致此错误,是否可以修复以允许用户更改密码?
无论我设置密码还是删除密码,我都会得到相同的行为passwd --delete
。
我对这种行为很好奇,所以我在我的机器上测试了它。
再生产
我创建一个新用户
我为它创建了一个虚拟密码
测试我到目前为止在另一个终端所做的事情
回到我的根终端,我尝试做你所做的......
回到我的普通终端,我尝试连接新用户。
有趣的是,我和你一样。
去壳
所以我很好奇所以我查看了手册
奇怪的是它说:
我得出的结论是,所描述的行为不起作用是很奇怪的……
据我所知
pam.d
,负责我在日志中查找它的登录。在日志中,我看到了以下内容。
注意:当我登录时,使用
su
的su-l
是服务。这意味着它
pam.d
可以正常工作,但它不处理密码更改。但我不相信,所以我用 SSH 进行了测试(我将 SSH 配置留给你)并且它起作用了。
我问自己,区别在哪里?
我发现该
/etc/pam.d/sshd
文件有这一行因此,由于我的服务是
su-l
我将该行添加到/etc/pam.d/su-l
然后再试一次。
它奏效了!
结论
如果您将以下行添加到
/etc/pam.d/login
,/etc/pam.d/su-l
或其他配置,具体取决于您使用的服务。用户将能够在下次登录时更改密码。推荐(编辑 1)
在我的分析中,我经历了但在深入研究之后,我不得不承认即使
system-remote-login
有效,我们也应该避免它,因为它实际上是为 SSH 考虑的。因此,我建议遇到此问题的任何人将以下行(而不是)添加到或其他配置中
/etc/pam.d/login
,/etc/pam.d/su-l
具体取决于您使用的服务。