Belajar LDAP - Menambah & Mengelola Entries
Episode 7 of 31

Belajar LDAP - Menambah & Mengelola Entries

Mengisi direktori dari kosong: merencanakan struktur domain dan organizational units, menambahkan user dengan inetOrgPerson dan posixAccount, membuat grup dengan groupOfNames, serta operasi batch dengan ldapadd.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 6 kalian menguasai perangkat klien dan format LDIF. Sekarang giliran memakainya: episode 7 membahas pengisian direktori secara nyata, mulai dari merencanakan struktur pohon direktori, membuat domain entry dan organizational units, menambahkan user dengan ldapadd, membuat grup, hingga impor banyak entry sekaligus lewat operasi batch.

Merencanakan Struktur Direktori

Sebelum menambah entry pertama, rancang dulu bentuk pohonnya. Struktur direktori (DIT) yang rapi menentukan mudah tidaknya ACL dan pencarian di episode berikutnya. Prinsip dasarnya:

  • Satu entry root berupa komponen domain, misal dc=example,dc=com.
  • Pecah entitas menurut fungsi, bukan per orang, dengan ou= (organizational unit).
  • Simpan user di OU tersendiri dan grup di OU tersendiri agar ACL dan filter lebih tajam.
  • Rencanakan pertumbuhan: menambah departemen berarti menambah cabang OU, bukan merombak struktur.

Contoh layout yang umum dipakai: dc=example,dc=com di puncak, lalu ou=People untuk semua user dan ou=Groups untuk semua grup. Kalau organisasi membesar, kalian bisa menambah cabang seperti ou=Contractors atau ou=Departments tanpa memindahkan entry yang sudah ada.

Membuat Struktur Dasar dengan ldapadd

Struktur dasar berisi domain entry dan dua OU. Simpan dalam satu file LDIF:

struktur-dasar.ldif
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: example
o: Example Inc
 
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
 
dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

Impor dengan ldapadd:

Menambah struktur dasar
ldapadd -x -H ldap://localhost -D "cn=admin,dc=example,dc=com" -W -f struktur-dasar.ldif

Opsi -f membaca seluruh file sekaligus; antar-entry dipisahkan baris kosong. Setelah dijalankan, cek hasilnya dengan ldapsearch -x -b dc=example,dc=com -s sub "(objectClass=*)" dan pastikan ketiga entry muncul.

Note

Entry dc=example,dc=com harus dibuat paling awal karena LDAP bersifat hierarkis — entry anak tidak bisa ada sebelum orang tuanya. Konfigurasi dpkg-reconfigure slapd di episode 5 biasanya sudah membuat domain entry ini saat instalasi, jadi cukup memastikannya ada.

Menambahkan User

Entry user dalam LDIF

User direpresentasikan dengan kombinasi object class. Standar untuk direktori enterprise:

  • inetOrgPerson — atribut personal seperti cn, sn, givenName, dan mail.
  • posixAccount — atribut Unix seperti uidNumber, gidNumber, homeDirectory, dan loginShell.
budi.ldif
dn: uid=budi,ou=People,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
uid: budi
cn: Budi Santoso
sn: Santoso
givenName: Budi
mail: budi@example.com
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/budi
loginShell: /bin/bash
userPassword: {SSHA}1K0vX...

Aturan wajib: inetOrgPerson mewajibkan cn dan sn; posixAccount mewajibkan uid, uidNumber, gidNumber, dan homeDirectory. Nilai uidNumber dan gidNumber harus unik agar tidak bentrok saat dipakai sistem.

Hash password, jangan plaintext

Atribut userPassword jangan pernah diisi password mentah. Buat hash dulu dengan slappasswd:

Membuat hash password
slappasswd
New password:
Re-enter new password:
{SSHA}1K0vX...

OpenLDAP 2.5 mendukung salted hash SSHA, SSHA256, SSHA512, serta CRYPT dan ARGON2 (bila modul dibangun). Hash yang dihasilkan lalu disalin ke userPassword di LDIF. Detail lengkap tentang hashing dibahas di episode 12.

Tambahkan user-nya dengan ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f budi.ldif.

Important

Selalu tulis userPassword sebagai hash dari slappasswd, bukan teks polos. Di lingkungan nyata, teks polos bisa dengan mudah terbaca oleh siapa saja yang punya akses baca ke atribut ini.

Menambahkan Grup

Grup dibedakan menjadi dua kebutuhan: grup untuk pengelolaan direktori dan grup untuk pemetaan Unix.

  • groupOfNames — memerlukan cn dan minimal satu member, cocok untuk grup aplikasi.
  • posixGroup — memerlukan cn dan gidNumber, memakai memberUid untuk daftar anggota ala Unix.

Kedua object class sering digabung dalam satu entry:

group-devel.ldif
dn: cn=devel,ou=Groups,dc=example,dc=com
objectClass: groupOfNames
objectClass: posixGroup
cn: devel
gidNumber: 1001
member: uid=budi,ou=People,dc=example,dc=com
member: uid=sari,ou=People,dc=example,dc=com
memberUid: budi
memberUid: sari

Member diisi sebagai DN penuh pada atribut member. Atribut memberOf di sisi user tidak perlu diisi manual — atribut ini dipelihara otomatis oleh overlay memberOf yang akan kalian aktifkan di episode 11.

Tambahkan dengan ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f group-devel.ldif.

Operasi Batch

Banyak entry dalam satu file

File LDIF boleh memuat banyak entry sekaligus — pisahkan dengan baris kosong, dan setiap entry tetap dimulai dengan dn::

semua-user.ldif
dn: uid=sari,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: sari
cn: Sari Wulandari
sn: Wulandari
uidNumber: 1002
gidNumber: 1001
homeDirectory: /home/sari
 
dn: uid=aji,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: aji
cn: Aji Pratama
sn: Pratama
uidNumber: 1003
gidNumber: 1001
homeDirectory: /home/aji

Skrip impor dan penanganan error

Untuk jumlah besar, impor bisa dipanggil berulang kali dari skrip. Perhatikan dua perilaku default: ldapadd berhenti pada error pertama, dan return code-nya mencerminkan keberhasilan. Tambahkan -c untuk melanjutkan walau ada entry yang gagal:

Impor dengan mode continue
ldapadd -c -x -D "cn=admin,dc=example,dc=com" -W -f semua-user.ldif

Soal transaksi

LDAP tidak menjamin atomikitas penuh seperti basis data relasional: setiap entry diproses sebagai operasi terpisah. Jika satu file memuat seratus entry dan entry ke-50 gagal, entry 1 sampai 49 tetap tersimpan. Karena itu uji file di server development, dan untuk perubahan yang harus all-or-nothing, pecah menjadi file kecil yang diverifikasi bertahap.

Penutup

Episode 7 membawa direktori dari kosong menjadi terisi: perencanaan struktur domain dan OU, pembuatan entry user dengan inetOrgPerson plus posixAccount, grup dengan groupOfNames plus posixGroup, hash password via slappasswd, hingga operasi batch dengan mode -c.

Inti yang harus dibawa pulang:

  • Rancang DIT sebelum mengisi data — struktur menentukan kemudahan ACL nanti.
  • inetOrgPerson butuh cn dan sn; posixAccount butuh uid, uidNumber, gidNumber, homeDirectory.
  • Jangan pernah menulis password plaintext di userPassword — selalu hash dengan slappasswd.
  • Operasi LDAP tidak transaksional penuh; uji di environment development dulu.

Di episode 8 berikutnya, kalian akan memodifikasi dan menghapus apa yang sudah dibuat: menambah, mengganti, dan menghapus atribut, merename RDN, memindahkan entry, dan menghapus entry secara aman.

Belajar LDAP - Menambah & Mengelola Entries | Belajar LDAP