You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NIS服务器用openssl passwd建用户后su登录失败问题咨询

NIS服务器本地su用户失败但客户端登录正常的成因

该问题的核心是NIS服务器本地用户数据读取优先级、密码哈希算法不匹配、密码修改范围不一致三类原因导致,具体拆解如下:

  • 名称服务切换配置优先级异常
    NIS服务器默认的/etc/nsswitch.conf配置中,passwd、shadow项的读取顺序为files nis,也就是优先读取本地/etc/passwd、/etc/shadow文件,再读取NIS数据库的内容。你创建用户时将加密密码写入了本地shadow文件,后续操作如果没有同步更新本地shadow的密码,就会出现本地和NIS数据库的密码哈希不一致:本地su验证时读取本地旧哈希直接报错,NIS客户端读取NIS数据库的新哈希可正常登录。
  • openssl默认加密算法和本地PAM规则不兼容
    你执行的openssl passwd '1234'命令默认使用传统的DES加密算法生成哈希,如果你的NIS服务器本地PAM密码校验规则要求使用SHA512、yescrypt等更高安全等级的加密算法,旧的DES哈希会被直接判定为无效格式,触发密码错误提示;而多数NIS客户端为了兼容旧版本服务,默认开放了DES算法的校验支持,因此可以正常验证通过。
  • passwd命令默认修改范围未覆盖本地文件
    如果你在NIS服务器上配置了passwd命令默认修改NIS数据库的用户密码,执行passwd test1时只会更新NIS映射中的密码哈希,不会同步修改本地/etc/shadow中的对应条目,也会出现本地、NIS端密码不一致的问题。

验证方法

执行以下两条命令对比输出的密码哈希字段,确认是否存在不一致:

grep test1 /etc/shadow
ypcat passwd | grep test1

同时查看/etc/nsswitch.conf中passwd配置项的读取顺序,确认是否优先读取本地files。

解决方案

  • 若不需要test1用户在NIS服务器本地登录,直接删除/etc/passwd、/etc/shadow中的test1条目即可,本地su时会自动读取NIS数据库的用户信息完成校验。
  • 若需要本地登录,执行passwd -l test1强制更新本地shadow中的密码哈希,和NIS数据库保持一致即可。

内容的提问来源于stack exchange,提问作者Ian.cheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:06:03