Belajar LDAP - Memodifikasi & Menghapus Entries
Episode 8 of 31

Belajar LDAP - Memodifikasi & Menghapus Entries

Mengelola siklus hidup entry setelah dibuat: operasi add, delete, dan replace pada atribut, direktif changetype, merename RDN dengan modrdn, memindahkan entry dengan newsuperior, menghapus entry dan pohonnya, serta praktik backup dan validasi.

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

Pendahuluan

Di episode 7 kalian mengisi direktori dengan user dan grup. Episode 8 membahas sisi lain siklus hidup data: mengubah atribut, menambah nilai baru, menghapus atribut, merename entry, memindahkan entry antar parent, dan menghapus entry — semua lewat ldapmodify, ldapmodrdn, dan ldapdelete. Ini episode di mana data yang sudah masuk mulai bergerak dan berubah.

Memahami changetype

ldapmodify membaca file LDIF yang berisi direktif changetype. Empat nilai yang tersedia:

changetypeFungsiTool yang setara
addMenambah entry baruldapadd
deleteMenghapus entryldapdelete
modifyMengubah atribut entryldapmodify
modrdnMerename atau memindahkan entryldapmodrdn

Episode 7 memakai changetype: add secara implisit lewat ldapadd. Sekarang fokus ke modify dan modrdn.

Operasi Modifikasi: add, delete, replace

Ada tiga operasi perubahan atribut:

OperasiEfek
addMenambah atribut baru, atau nilai baru pada atribut jamak
deleteMenghapus atribut beserta semua nilainya, atau satu nilai tertentu
replaceMengganti seluruh nilai atribut dengan yang baru

Dalam file LDIF, tiap blok operasi diakhiri baris strip tunggal:

ubah-budi.ldif
dn: uid=budi,ou=People,dc=example,dc=com
changetype: modify
add: mail
mail: budi.santoso@example.com
-
replace: description
description: Account utama Budi
-
delete: telephoneNumber

Jalankan dengan ldapmodify:

Menjalankan modifikasi
ldapmodify -x -H ldap://localhost -D "cn=admin,dc=example,dc=com" -W -f ubah-budi.ldif

Direktif changetype: modify menandai bahwa ini operasi modify. Blok add: lalu mail: berarti menambah atribut mail; replace: mengganti nilai description; delete: menghapus atribut telephoneNumber. Untuk atribut jamak, kalian bisa menyebut nilai spesifik yang ingin dihapus:

Menghapus satu nilai jamak
dn: cn=devel,ou=Groups,dc=example,dc=com
changetype: modify
delete: member
member: uid=aji,ou=People,dc=example,dc=com

Modifikasi Batch

ldapmodify memproses banyak operasi sekaligus dalam satu file. Setiap entry membawa changetype-nya sendiri, dan tiap blok operasi tetap diakhiri strip tunggal:

batch-modify.ldif
dn: uid=sari,ou=People,dc=example,dc=com
changetype: modify
add: telephoneNumber
telephoneNumber: +62 21 555 0101
 
dn: uid=aji,ou=People,dc=example,dc=com
changetype: modify
replace: loginShell
loginShell: /bin/zsh

Satu file boleh mencampur modify, add, bahkan delete untuk entry berbeda. Seperti di episode 7, gunakan -c agar proses lanjut walau ada operasi yang gagal, dan periksa return code pada skrip.

Merename & Memindahkan Entry

Operasi ModifyDN mengubah Relative Distinguished Name (RDN) entry dan atau memindahkannya ke parent baru. Ada dua tool: ldapmodrdn untuk bentuk command-line, atau ldapmodify dengan changetype: modrdn.

Mengubah RDN

rename-rdn.ldif
dn: uid=budi,ou=People,dc=example,dc=com
changetype: modrdn
newrdn: uid=budi.santoso
deleteoldrdn: 0

newrdn menentukan RDN baru; deleteoldrdn: 1 menghapus atribut RDN lama, sedangkan 0 mempertahankannya sebagai atribut biasa. Jalankan:

Rename RDN
ldapmodify -x -D "cn=admin,dc=example,dc=com" -W -f rename-rdn.ldif

Bentuk command-line-nya dengan ldapmodrdn:

Rename via ldapmodrdn
ldapmodrdn -x -D "cn=admin,dc=example,dc=com" -W -r "uid=budi,ou=People,dc=example,dc=com" "uid=budi.santoso"

Opsi -r membuat RDN lama dihapus — setara dengan deleteoldrdn: 1.

Memindahkan entry ke parent lain

Direktif newsuperior memindahkan entry ke bawah parent baru:

pindah-entry.ldif
dn: uid=budi,ou=People,dc=example,dc=com
changetype: modrdn
newrdn: uid=budi
deleteoldrdn: 0
newsuperior: ou=Contractors,dc=example,dc=com

Setelah operasi ini, entry berada di uid=budi,ou=Contractors,dc=example,dc=com. Perhatikan bahwa newsuperior hanya tersedia pada server yang mendukungnya dan butuh hak akses yang sesuai — biasanya hanya admin.

Menghapus Entry

ldapdelete menerima satu atau beberapa DN, atau daftar DN lewat file dengan -f:

Menghapus satu entry
ldapdelete -x -D "cn=admin,dc=example,dc=com" -W "uid=test,ou=People,dc=example,dc=com"

Menghapus pohon (recursive)

Protokol LDAP tidak mendefinisikan operasi hapus-pohon. Menghapus entry yang masih punya anak akan ditolak server dengan kode 66 notAllowedOnNonLeaf. Karena itu untuk menghapus subtree, hapus dari daun ke akar:

Hapus daun, lalu akarnya
ldapdelete -x -D "cn=admin,dc=example,dc=com" -W "uid=test,ou=People,dc=example,dc=com"
ldapdelete -x -D "cn=admin,dc=example,dc=com" -W "ou=People,dc=example,dc=com"

Perulangan hapus-bawah-atas bisa ditulis dalam skrip shell dengan bantuan ldapsearch untuk mendaftar DN anak terlebih dulu.

Referential integrity

Saat user dihapus, referensi DN-nya di atribut member grup tidak ikut terhapus otomatis — inilah yang disebut dangling reference. Dampaknya: grup tetap menampilkan anggota yang sudah tidak ada. Solusinya memakai overlay refint (episode 11) atau membersihkan secara manual:

Membersihkan referensi
dn: cn=devel,ou=Groups,dc=example,dc=com
changetype: modify
delete: member
member: uid=aji,ou=People,dc=example,dc=com

Best Practices Modifikasi

  • Backup sebelum modifikasi — jalankan slapcat untuk cadangan konten database (pembahasan lengkap di episode backup and restore).
  • Uji di development dulu — jangan langsung menyentuh direktori production.
  • Gunakan file LDIF — simpan di version control agar perubahan bisa direproduksi dan direview.
  • Validasi hasil — verifikasi setelah modifikasi dengan ldapsearch:
Validasi setelah modifikasi
ldapsearch -x -D "cn=admin,dc=example,dc=com" -W -b "uid=budi,ou=People,dc=example,dc=com" -s base "(objectClass=*)"
  • Jaga jejak audit — aktifkan overlay auditlog (episode 11) untuk mencatat siapa mengubah apa.

Warning

Operasi modrdn dan ldapmodrdn bersifat sensitif: mengubah RDN mengubah DN seluruh entry turunannya, sehingga referensi di atribut lain ikut patah. Pastikan overlay refint aktif atau periksa dulu referensi yang menunjuk ke entry tersebut sebelum merename.

Penutup

Episode 8 menuntaskan siklus hidup entry: tiga operasi modifikasi add, delete, replace; direktif changetype termasuk modify dan modrdn; merename RDN dengan newrdn; memindahkan entry dengan newsuperior; menghapus entry dan pohonnya; serta praktik menjaga referensi tetap bersih.

Inti yang harus dibawa pulang:

  • Setiap blok operasi ldapmodify diakhiri strip tunggal.
  • deleteoldrdn menentukan apakah atribut RDN lama ikut dihapus.
  • LDAP tidak punya hapus-pohon; hapus dari daun ke akar.
  • Selalu backup dan validasi sebelum dan sesudah perubahan.

Di episode 9 berikutnya, kalian akan menyempurnakan kemampuan membaca: scope pencarian, filter seperti wildcard dan perbandingan, operator logika, sampai teknik memilih atribut dan menjaga performa pencarian.

Belajar LDAP - Memodifikasi & Menghapus Entries | Belajar LDAP