Mendaftarkan anggota grup menggunakan ldapsearch

12

Direktori LDAP perusahaan kami bertempat di penyiapan Direktori Open Server Snow Leopard. Saya mencoba menggunakan ldapsearchalat untuk mengekspor file .ldif untuk mengimpor ke server LDAP eksternal lain untuk diautentikasi dengan eksternal; pada dasarnya berusaha untuk dapat menggunakan kredensial yang sama secara internal dan eksternal.

Saya telah ldapsearchbekerja dan memberi saya konten dan atribut dari segala sesuatu di "Pengguna" OU, dan bahkan memfilter hanya atribut yang saya butuhkan:

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

Itu memberi saya daftar pengguna dan properti yang bisa saya impor ke server OpenLDAP jarak jauh saya.

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

Namun, ketika saya mencoba kueri yang sama pada "grup" OD dan bukannya "wadah," hasilnya adalah seperti ini:

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

Yang benar-benar saya inginkan adalah daftar pengguna dari contoh teratas yang difilter berdasarkan keanggotaan grup mereka, tetapi sepertinya keanggotaan ditetapkan dari sisi Grup, bukan dari sisi akun pengguna. Pasti ada cara untuk menyaring ini dan hanya mengekspor apa yang saya butuhkan, kan?

colemanm
sumber

Jawaban:

4

Saya bekerja dengan LDAP, tetapi tidak untuk server merek tertentu.

Hal pertama yang saya coba adalah pencarian pada pengguna yang menarik semua atribut mereka alih-alih membatasi seperti yang dilakukan contoh Anda.

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

Seringkali ada atribut "memberOf" pada pengguna yang mencantumkan nama grup atau DN grup untuk grup tempat pengguna berada, tetap disinkronkan dengan informasi dalam grup. Jika itu ada, itu adalah cara termudah untuk melakukan apa yang Anda inginkan.

The *akan ambil semua atribut pengguna (perilaku default) dan +akan ambil semua atribut operasional (atribut khusus).

freiheit
sumber
Ini adalah utas lama tetapi harus disebutkan bahwa dalam OpenLDAP (dasar dari Open Directory) memberOfadalah atribut operasional dan perlu diminta secara eksplisit. Sebuah hanya ldapsearchseperti disarankan di sini tidak akan kembali memberOf, bahkan jika itu ada. Juga harus disebutkan bahwa memberOfoverlay biasanya tidak diaktifkan secara default, meskipun saya tidak tahu bagaimana ini ditangani di OS X dan Open Directory.
daff
@daff Saya percaya + harus mendapatkan semua atribut operasional ...
freiheit
Ah, memang. Pembaruan Anda ldapsearchberfungsi seperti yang diiklankan.
Daff
0

Apakah Anda bertujuan untuk mewakili grup dengan menempatkan objek pengguna di wadah yang berbeda? Suka:

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
...

Jika demikian, saya berharap Anda harus menulis skrip untuk memijat LDIF. Coba modul Python-LDAP yang luar biasa.

Saya akan mempertanyakan mengapa Anda ingin melakukan itu. Itu membuatnya berantakan untuk memiliki pengguna yang milik beberapa kelompok, dan bertentangan dengan konvensi Open Directory. Tidak bisakah Anda menyalin semua objek pengguna dan grup ke server OpenLDAP Anda, dan menanyakannya berdasarkan keanggotaan grup alih-alih dari wadah mana objek pengguna itu berada?

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

Ini bekerja dengan sangat baik.

Murali Mopuru
sumber