“ypcat”和“ypmatch username passwd”在服务器上更改后不同意

时间:2008-08-28 16:13:19

标签: linux nis

我正在尝试使用 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

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

5 个答案:

答案 0 :(得分:6)

约翰奥指出了我正确的方向。

他是对的。如果在/etc/ypserv.conf中设置“files:0”,则可以使ypserv不缓存文件。如果你必须在每次制作后重新启动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 :(得分: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。确保,你是使用ypserv 1.2或更高版本中的新/ var / yp / Makefile,或者在Makefile中将-c标志添加到makedbm。如果不这样做,ypserv将继续使用旧映射,而不是更新映射。 “

makefile DOES 使用“makedbm -c”,但ypserv仍使用旧的(缓存)地图。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

嗯,你不应该重启ypserver让更新生效; / var / yp中的 make 应该可以解决问题。你可能想检查/ var / yp中的Makefile,以确保它在正确的条件下触发(即,passwd.by *应该以某种方式检查/ etc / passwd上的时间戳,而不是它当前的表。在我运行的NIS服务器上查看passwd.time规则,回到黑暗时代。杀死并重新启动你的nis服务器可以对(特别是非Linux)客户端产生时髦的影响,所以要小心这样做吧。

答案 4 :(得分:0)

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