我对使用 LDAP 还不太熟悉,尤其是非 AD LDAP。我们使用 RedHat Directory Server,并尝试执行 LDAP 查询(特别是过滤器),该查询将cn
使用包含特定用户名的属性从中检索所有用户(及其属性) nisNetgroupTriple
。这就是我们管理“超级用户”的方式,然后其他人会根据他们的需求被放入特定用户中。所以,我的问题是,cn
如何使用搜索和过滤ldapsearch
来从中检索用户和属性(uid
,,,) 。以下是我作为测试所做的一些示例输出:sn
givenName
mail
cn
ldapsearch
# ldapsearch -xLLL -h server-p 389 -D "cn=Directory Manager" -b "cn=linux,dc=example,dc=org" \* + -W
Enter LDAP Password:
dn: cn=linux,dc=example,dc=org
nisNetgroupTriple: (,user1,)
nisNetgroupTriple: (,user2,)
nisNetgroupTriple: (,user3,)
cn: linux
objectClass: top
objectClass: nisNetgroup
memberNisNetgroup: linux
description: Linux
我需要做的是获取每个用户的属性:,,,user1
例如:user2
user3
# ldapsearch -xLLL -h server -p 389 -D "cn=Directory Manager" -b "dc=example,dc=org" -x '(&(objectClass=posixAccount)(uid=user1))' -W
Enter LDAP Password:
dn: uid=user1,ou=People,dc=example,dc=org
userPassword:: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
givenName: User
sn: One
loginShell: /bin/false
gidNumber: 1000
uidNumber: 10054
mail: user1@localhost
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
objectClass: posixAccount
uid: user1
cn: User One
homeDirectory: /home/user1
似乎无法在互联网上找到任何有关如何执行此操作(如果可以执行)的有意义的信息。此外,我可能不完全了解 LDAP 的这一部分,这可能是为什么 1) 我找不到任何东西和 2) 我不知道如何自己弄清楚。
任何帮助都将受到赞赏。
答案1
以下命令将根据配置帮助搜索用户名。
ldapsearch -h localhost -D "cn=Directory Manager" -b "dc=example,dc=org" -W -x "(&(objectClass=nisnetgroup)(nisNetgroupTriple=\(,user1,\)))" cn | grep dn
它将显示唯一的 cn。您可以快速执行 grep,输出将简短而准确。添加/修改该组会更有帮助。
请尝试此 LDAP 查询,如果有任何问题请告诉我。