如何使用ldapsearch列出所有FreeIPA系统账户?
解决FreeIPA系统账户查询失败的问题
你的问题确实出在LDAP过滤器的写法上,之前的(uid=*,cn=sysaccounts)不符合LDAP过滤器语法——LDAP过滤器只能针对属性=值进行匹配,cn=sysaccounts是条目的DN组成部分,不能直接写到过滤器里。
下面是两种可行的解决方案:
方案1:直接指定系统账户的搜索基准
FreeIPA的系统账户统一存储在cn=sysaccounts,cn=etc,dc=example,dc=com这个节点下,直接把搜索基准(-b参数)改成这个路径,配合简单的uid=*过滤器就能精准查询:
ldapsearch -x -b "cn=sysaccounts,cn=etc,dc=example,dc=com" -H ldap://ipa.example.com -D "uid=myuser,cn=sysaccounts,cn=etc,dc=example,dc=com" -W "(uid=*)" dn
方案2:在全域范围内匹配系统账户的DN
如果需要在整个域内搜索所有属于sysaccounts的条目,可以使用LDAP的DN子串匹配扩展过滤器,通过dn:1.2.840.113556.1.4.1941:前缀来匹配DN中包含指定片段的条目:
ldapsearch -x -b "dc=example,dc=com" -H ldap://ipa.example.com -D "uid=myuser,cn=sysaccounts,cn=etc,dc=example,dc=com" -W "(dn:1.2.840.113556.1.4.1941:=cn=sysaccounts)" dn
这两种方法都能正确列出FreeIPA中的所有系统账户,其中方案1的查询效率更高,因为它直接限定了搜索范围。
内容的提问来源于stack exchange,提问作者Terentev Maksim
相关产品推荐
相关产品推荐

