我正在使用Perl的getpwnam
来检查我用来存储用户信息的LDAP数据库中是否存在条目。这用于删除LDAP条目的脚本。
问题是,当我运行一次脚本时,它成功了,我再也看不到通过Unix命令getent passwd
输入的内容,并且它也从LDAP数据库中删除了。问题是,当我再次尝试运行脚本并要求它删除相同的用户条目(检查它是幂等的)时,getpwnam
测试仍然返回成功(并打印刚刚删除的条目)导致脚本抛出有关尝试删除不存在的条目的错误。
为什么Perl的getpwnam
表现得像这样?是否存在更强大的LDAP条目测试,而不是绑定到LDAP服务器并查询它?
答案 0 :(得分:2)
nscd
缓存显然没有跟踪您的删除。
我不愿意将此称为“答案”,因为我不知道nscd是否假设与删除保持同步,或者如何修复它。我用nscd做过的唯一事就是删除它。