3

我正在尝试在一台机器上使用NIS进行身份验证。我必须更改 NIS 服务器上用户帐户的用户 ID 号之一(我将用户 IDusername从 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)。

4

5 回答 5

6

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。

于 2012-10-15T17:18:27.053 回答
2

遇到同样的问题 - 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。确保您使用的是新的/var/yp/Makefile 来自 ypserv 1.2 或更高版本,或者在 Makefile 中将 -c 标志添加到 makedbm。如果您不这样做,ypserv 将继续使用旧地图,而不是更新的地图。

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

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

于 2010-09-10T19:34:21.593 回答
1

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

于 2008-08-28T16:45:06.817 回答
0

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

于 2008-08-28T21:20:26.560 回答
0

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

于 2017-01-03T22:57:30.437 回答