在服务器上进行更改后," ypcat"和" ypmatch用户名密码"不一致

时间:2020-03-05 18:44:30  来源:igfitidea点击:

我正在尝试使用NIS在一台计算机上进行身份验证。我必须更改NIS服务器上某个用户帐户的用户ID号之一(为了避免与客户端上ID为500的本地用户帐户发生冲突,我将" username"的userid从500更改为509)。问题在于它尚未在客户端上正确更新。

特别是如果我执行ypcat passwd | grep username`,我得到了最新的信息:

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

但是如果我这样做,ypmatch用户名passwd,它说:

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

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

解决方案

回答

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

回答

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

回答

遇到相同的问题,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中的makedbm中添加-c标志。如果不这样做,ypserv将继续使用旧地图,而不是更新的地图。"

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

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