Ldapsearch kullanarak grup üyelerini listeleme


13

Kurumsal LDAP dizinimiz bir Snow Leopard Server Açık Dizin kurulumunda bulunmaktadır. Harici kimlik doğrulaması için başka bir harici LDAP sunucusuna ldapsearchalmak için bir .ldif dosyasını vermek için aracı kullanmaya çalışıyorum ; temel olarak aynı kimlik bilgilerini dahili ve harici olarak kullanmaya çalışabilir.

Ben ldapsearchçalışma ve bana "Kullanıcılar" OU her şeyin içeriğini ve niteliklerini vermek var , ve hatta sadece ihtiyacım olan özelliklerine filtre:

ldapsearch -xLLL -H ldap://server.domain.net / 
 -b "cn=users,dc=server,dc=domain,dc=net" objectClass / 
 uid uidNumber cn userPassword > directorycontents.ldif

Bu bana uzak OpenLDAP sunucuma aktarabileceğim kullanıcıların ve özelliklerin bir listesini verir.

dn: uid=username1,cn=users,dc=server,dc=domain,dc=net
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: organizationalPerson
uidNumber: 1000
uid: username1
userPassword:: (hashedpassword)
cn: username1

Ancak, aynı sorgu bir "kapsayıcı" yerine bir OD "grup" üzerinde denediğinizde, sonuçları şöyle bir şeydir:

dn: cn=groupname,cn=groups,dc=server,dc=domain,dc=net
objectClass: posixGroup
objectClass: apple-group
objectClass: extensibleObject
objectClass: top
gidNumber: 1032
cn: groupname
memberUid: username1
memberUid: username2
memberUid: username3

Gerçekten istediğim, grup üyeliğine göre filtrelenen üst örnekteki kullanıcıların bir listesi, ancak üyelik, kullanıcı hesabı tarafı yerine Grup tarafından ayarlanmış gibi görünüyor. Bunu filtrelemenin ve sadece ihtiyacım olanı dışa aktarmanın bir yolu olmalı, değil mi?

Yanıtlar:


4

LDAP ile çalışıyorum, ancak belirli bir sunucu markası değil.

Denediğim ilk şey, örneklerin yaptığı gibi kısıtlamak yerine tüm özelliklerini çeken kullanıcıların aramasıdır.

ldapsearch -xLLL -H ldap://server.domain.net \
    -b "cn=users,dc=server,dc=domain,dc=net" uid=username1 \* +

Genellikle, kullanıcının içinde bulunduğu grup için grup adını veya grup DN'sini listeleyen ve gruptaki bilgilerle senkronize halde tutulan bir "memberOf" özelliği vardır. Eğer oradaysa, istediğinizi yapmanın en kolay yolu budur.

*Tüm kullanıcı özelliklerini (varsayılan davranış) çekecek ve +tüm operasyonel özelliklerini (özel nitelikler) çekecek.


Bu eski bir iş parçacığıdır, ancak OpenLDAP'ta (Açık Dizin'in temeli) memberOfişlevsel bir özellik olduğu ve açıkça talep edilmesi gerektiği belirtilmelidir. A sadece ldapsearchburada önerilen gibi döndürmez memberOfvarolduğundan bile. Ayrıca memberOf, OS X ve Open Directory'de bunun nasıl işlendiğini bilmememe rağmen , bindirmenin genellikle varsayılan olarak etkin olmadığı belirtilmelidir .
daff

@daff Bir + 'nın tüm operasyonel nitelikleri alması gerektiğine inanıyorum ...
freiheit

Ah, gerçekten. Güncellenen ldapsearch, reklamı yapıldığı şekilde çalışır.
daff

1
ldapsearch -x \
-b "cn=<your group name>,ou=group,dc=<your org>,dc=com" \
-H ldaps://<ldap server>:<port>

Bu çok iyi çalışıyor.


0

Farklı kaplarda kullanıcı nesneleri bulundurarak grupları temsil etmeyi mi hedefliyorsunuz? Sevmek:

dn: uid=username1,cn=users,cn=accounting,dc=server,dc=domain,dc=net
...
dn: uid=username2,cn=users,cn=engineering,dc=server,dc=domain,dc=net
...

Eğer öyleyse, LDIF'ye masaj yapmak için bir senaryo yazmanız gerektiğini umuyorum. Mükemmel Python-LDAP modüllerini deneyin .

Bunu neden yapmak istediğini soruyorum. Birden fazla gruba ait kullanıcıların olmasını dağınık hale getirir ve Open Directory sözleşmelerine aykırıdır. Tüm kullanıcı ve grup nesnelerini OpenLDAP sunucunuza kopyalayıp kullanıcı nesnesinin bulunduğu kapsayıcı yerine grup üyeliğine göre sorgulayamaz mısınız?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.