我有这个问题,我通过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”。但这些都不是真正的小组......只是全名。
答案 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>))' '*'