Perl的getpwnam返回已删除的条目

时间:2014-07-28 19:18:57

标签: perl openldap

我正在使用Perl的getpwnam来检查我用来存储用户信息的LDAP数据库中是否存在条目。这用于删除LDAP条目的脚本。

问题是,当我运行一次脚本时,它成功了,我再也看不到通过Unix命令getent passwd输入的内容,并且它也从LDAP数据库中删除了。问题是,当我再次尝试运行脚本并要求它删除相同的用户条目(检查它是幂等的)时,getpwnam测试仍然返回成功(并打印刚刚删除的条目)导致脚本抛出有关尝试删除不存在的条目的错误。

为什么Perl的getpwnam表现得像这样?是否存在更强大的LDAP条目测试,而不是绑定到LDAP服务器并查询它?

1 个答案:

答案 0 :(得分:2)

nscd缓存显然没有跟踪您的删除。

我不愿意将此称为“答案”,因为我不知道nscd是否假设与删除保持同步,或者如何修复它。我用nscd做过的唯一事就是删除它。