从Ldap GID中查找组名

时间:2012-03-14 20:53:15

标签: php ldap

我有这个问题,我通过ldap搜索在LDAP中选择了一个用户,只给出了gid的属性。

    $ldapattributes = array("gidnumber");
    $ldapdn = "o=example";
    $ldapfilter = "(sn=".$ldapuname."*)";
    $ldapbind = ldap_bind($ldapconn, $ldapuname, $ldappass) or trigger_error('Could not bind to '.$ldaphost);
    $sr = ldap_search($ldapconn,$ldapbasedn,$ldapfilter,$ldapattributes);
    var_dump($sr);
    $entry = ldap_get_entries($ldapconn, $sr);
    var_dump($entry);

我从vardump获得的结果是:

  

'gidnumber'=>           排列             'count'=> int 1             0 =>字符串'1617'(长度= 4)

我知道1617是正确映射到我想要的组的数字,但是,我想在其他地方将其归结为“ConfSer”的文本。我无法发现它的位置,或者我如何将gid转换为另一个过滤器以获取该特定组的名称和信息(因此我可以通过一个吐出权限的配置文件来路由它)。

编辑:我在结果中得到“CN = Ldaptst2 Majtst,O = example”。但这些都不是真正的小组......只是全名。

1 个答案:

答案 0 :(得分:1)

构建一个搜索过滤器,它将返回所有具有objectClass posixGroup和的条目 例如,所需的gidNumber (&(objectClass=posixGroup)(gidNumber=<insert-gid-number-here>))。您还必须提供一份清单 要在搜索结果中返回的属性。取决于代码使用的API 此属性列表可能默认为所有用户属性。返回的属性之一 将是组的相对可分辨名称,搜索结果本身将包含 组的可分辨名称,可能类似于:cn=group-of-users,dc=example,dc=com

从命令行,此搜索可能类似于:

ldapsearch -h hostname -p port -b dc=example,dc=com -s sub \
   '(&(objectClass=posixGroup)(gidNumber=<insert-gid-number-here>))' '*'