我目前正在将 CentOS 环境迁移到 Debian 环境。用户使用NIS通过网络登录。我希望/etc/shadow
从旧服务器复制到新服务器,以便我们可以为用户提供连续性。我发现它有两个问题:
- 用户ID冲突通过在 CentOS 文件中的 UID 中添加 500 可以轻松解决这个问题,
shadow
因为 CentOS 以 500 启动 UID,而 Debian 以 1000 启动 UID。 - 不同的密码哈希值这就是要我命的原因。看来 CentOS 使用 散列其密码,
md5
而 Debian 使用sha-512
.我希望用户能够登录系统而无需咨询我。
经过一番谷歌搜索后,我发现了一个可接受的解决方案如下:
passwd -d uname
chage -d 0 uname
第一行为用户设置一个空密码,uname
以便他们可以直接登录。第二行导致uname
的密码过期,因此他们被迫在下次登录时更改密码。我认为这是一个足够好的妥协。
如果用户登录到服务器上,这一切都很好。如果用户尝试从不同的机器进行 NIS 身份验证,则该方法不起作用。他们仍然收到“需要更改密码”的消息,但紧接着是“身份验证令牌操作错误”;我猜测,这是因为密码更改是通过passwd
而不是尝试更改的yppasswd
。这就是我目前面临的困境。如何实现连续性而不尴尬地强迫用户首先登录服务器?
编辑
编辑2
我刚刚注意到,当用户尝试登录服务器时,他们可以正常登录,而不会出现错误消息。在另一个机器上(为了测试 NIS),我切换到 root,然后尝试su
进入其中一个 NIS 用户。它成功了,同时给我一个警告,说“身份验证失败(忽略)”。我猜这来自 PAM 策略链。
答案1
这根本不是重新哈希密码的问题。我所需要的只是修改我的旧密码/etc/group
,使其组 ID 以 1000 开头,并且用户可以使用旧密码轻松登录,正如一些评论者所猜测的那样。