我正在尝试使用 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。)
答案 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)
答案 4 :(得分:0)
这是因为nscd守护进程。 在/etc/nscd.conf中为passwd会话将生存时间值设置为60。它会起作用