2012-03-14 18 views
0

私はこの問題を抱えていますが、gidの属性のみを与えるLDAP検索でLDAPでユーザーを選択しています。Ldapからグループ名を検索する

$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); 

iはvardumpから得る結果は:

'のgidNumber' => アレイ 'カウント' => INT 1 0 =>文字列 '1617'(長さ= 4)

私が知りたいと思うグループに正しくマップされている数字は分かっていますが、「ConfSer」と書かれているテキストが好きです。私はこれがどこであるか、または特定のグループの名前と情報を取得するためにgidを別のフィルタに変える方法を知ることができませんでした(したがって、アクセス権を吐き出す設定ファイルを通して経路指定できます)。

EDIT:「CN = Ldaptst2 Majtst、O = example」も結果に表示されます。しかし、どちらも実際にグループではありません...まさに名前です。

+0

? posix_getgrgid(そして他のposix_get *関数)を使うことができます。そうしないと、別のLDAPクエリを実行してgid番号をグループ名にマッピングする必要があります。時には(openldapなど)、特別なオーバーレイを使用して単一のクエリでグループ名を与えることができます。 – kupson

答えて

0

例えば、オブジェクトクラスposixGroupと 希望gidNumberを持っているすべてのエントリを返します。検索フィルタを構築し、 (&(objectClass=posixGroup)(gidNumber=<insert-gid-number-here>))。検索結果に戻るには、属性のリスト も指定する必要があります。 を使用してコードで使用されているAPIに応じて、この属性のリストはすべてのユーザー属性にデフォルト設定されます。 の属性の1つがグループの相対識別名になり、検索結果自体にグループの識別名 が含まれます(cn=group-of-users,dc=example,dc=comなど)。

コマンドラインから、この検索のようなものかもしれません:あなたはLDAPディレクトリを使用するように構成されたこのシステム上でNSS(ネームサービススイッチ)を持っていますか

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

これは非常に役に立ちましたが、残念なことに、*属性を与えた後でさえ、CNのようなものを返しませんでした。 – tadiou

+0

これは、まさに私が+/-実現を終えたものでした。ああ、私はドミノを使っています。 – tadiou

関連する問題