【问题标题】:"ypcat" and "ypmatch username passwd" don't agree after change on server“ypcat”和“ypmatch username passwd”在服务器上更改后不一致
【发布时间】:2010-09-07 03:45:47
【问题描述】:

我正在尝试使用 NIS 在大量机器上进行身份验证。我必须更改 NIS 服务器上用户帐户的用户 ID 号之一(我将 username 的用户 ID 从 500 更改为 509,以避免与客户端上 ID 为 500 的本地用户帐户发生冲突)。问题是它没有在客户端上正确更新。

特别是,如果我这样做ypcat passwd | grep username,我会得到最新信息:

username:*hidden*:509:509:User Name:/home/username:/bin/bash

但如果我这样做了,ypmatch username passwd,它会说:

username:*hidden*:500:500:User Name:/home/username:/bin/bash

这意味着当用户登录其中一个客户端时,它的用户 ID 错误,这会导致各种问题。我在服务器上完成了"cd /var/yp; make",在客户端上完成了"service ypbind restart",但这并没有解决问题。有谁知道会导致这种情况以及我如何以某种方式强制客户端刷新? (我在客户端和服务器上都运行 Fedora 8)。

【问题讨论】:

    标签: linux nis


    【解决方案1】:

    这是因为 nscd 守护进程。 在 /etc/nscd.conf 中将 passwd 会话的生存时间值设置为 60。它会工作

    【讨论】:

      【解决方案2】:

      John O 为我指明了正确的方向。

      他是对的。如果您在 /etc/ypserv.conf 中设置“files: 0”,您可以让 ypserv 不缓存文件。如果您必须在每次 make 后重新启动 ypserv,这就是问题所在。

      真正的解决方案是在 /var/log/messages 中查找此错误:

      ypserv[]: refused connect from 127.0.0.1 to procedure ypproc_clear (,;0)
      

      makedbm -c 表示:发送 YPPROC_CLEAR 到本地 ypserv。日志中的错误消息意味着 CLEAR 消息被拒绝。您需要将 127.0.0.1 添加到 /var/yp/securenets。

      【讨论】:

      • +1 你是明星——我一直想知道为什么我们的某些机器需要重启 ypserv 而其他机器不需要。
      【解决方案3】:

      遇到了同样的问题 - RHEL 5.5。更改(任何)源映射,然后运行 ​​make。 ypcat 显示更改的信息,ypmatch 不显示。任何需要实际使用新地图的东西都会失败。根据上一篇文章,重新启动 ypserv 一切正常。经过几天的测试,运行 strace 等。我发现 ypserv 有一个由 /etc/ypserv.conf 中的“file:”条目控制的“文件句柄缓存”---默认值为 30。将其更改为 0 和制作后一切正常。

      不应该这样做 --- 根据 ypserv.conf 的手册页...

      “ypserv 1.1 和 ypserv 1.2 之间有一个很大的变化。从 1.2 版开始,文件句柄被缓存。这意味着如果您创建新地图,您必须始终使用 -c 选项调用 makedbm。确保您是使用来自 ypserv 1.2 或更高版本的新 /var/yp/Makefile,或者在 Makefile 中添加 -c 标志到 makedbm。如果您不这样做,ypserv 将继续使用旧地图,而不是更新的地图。 "

      makefile 确实使用“makedbm -c”,但 ypserv 仍然使用旧的(缓存的)映射。

      答案:不要缓存文件句柄,例如在 ypserv.conf 中设置“文件:0”

      【讨论】:

      • 查看我的回答。你的回答是天赐之物,但我知道为什么 makedbm -c 不起作用。
      【解决方案4】:

      嗯,您不必重新启动 ypserver 以使更新生效; /var/yp 中的 make 应该可以解决问题。您可能需要检查 /var/yp 中的 Makefile 以确保它在正确的条件下触发(即 passwd.by* 应该以某种方式检查 /etc/passwd 上的时间戳,而不是其当前表。该过程用于在我运行的 NIS 服务器上通过 passwd.time 规则,回到黑暗时代)。杀死并重新启动 nis 服务器可能会对(尤其是非 Linux)客户端产生奇怪的影响,所以要小心谨慎。

      【讨论】:

        【解决方案5】:

        好的,我发现问题了,我还得重新启动服务器上的 NIS 服务才能让它刷新所有内容("service ypserv restart"

        【讨论】:

          猜你喜欢
          • 2021-07-27
          • 1970-01-01
          • 2022-10-16
          • 2015-02-10
          • 1970-01-01
          • 2013-10-01
          • 2013-07-04
          • 2012-02-13
          • 1970-01-01
          相关资源
          最近更新 更多