2012-03-14 3 views
0

У меня есть эта проблема, у меня есть пользователь, выбранный в LDAP через поиск ldap, дающий только атрибут gid.Поиск имени группы из 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 в другой фильтр, чтобы получить имя и информацию этой конкретной группы (поэтому я могу перенаправить его через файл конфигурации, который выдает разрешения).

EDIT: Я получаю «CN = Ldaptst2 Majtst, O = пример» в результатах. Но ни одна из них на самом деле не группа ... просто полное имя.

+0

ли вы NSS (Name Service коммутатор) в этой системе настроен на использование каталога LDAP? Затем вы можете использовать posix_getgrgid (и другие функции posix_get *), иначе вам придется выполнить другой запрос LDAP, чтобы сопоставить gid-номер с именем группы. Иногда (openldap и т. Д.) Можно использовать специальный оверлей, чтобы дать вам имя группы в одном запросе. – kupson

ответ

0

Построить фильтр поиска, который будет возвращать все записи, которые имеют объектный 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>))' '*' 
+0

Это было очень полезно, но, к сожалению, он не возвращал ничего подобного в CN, даже после того, как дал ему атрибут *. – tadiou

+0

Это было в точности то, что я закончил делать +/- осознавая, о, я использую Domino. – tadiou

Смежные вопросы