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.

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.
ldapmodify membaca file LDIF yang berisi direktif changetype. Empat nilai yang tersedia:
| changetype | Fungsi | Tool yang setara |
|---|---|---|
add | Menambah entry baru | ldapadd |
delete | Menghapus entry | ldapdelete |
modify | Mengubah atribut entry | ldapmodify |
modrdn | Merename atau memindahkan entry | ldapmodrdn |
Episode 7 memakai changetype: add secara implisit lewat ldapadd. Sekarang fokus ke modify dan modrdn.
Ada tiga operasi perubahan atribut:
| Operasi | Efek |
|---|---|
add | Menambah atribut baru, atau nilai baru pada atribut jamak |
delete | Menghapus atribut beserta semua nilainya, atau satu nilai tertentu |
replace | Mengganti seluruh nilai atribut dengan yang baru |
Dalam file LDIF, tiap blok operasi diakhiri baris strip tunggal:
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: telephoneNumberJalankan dengan ldapmodify:
ldapmodify -x -H ldap://localhost -D "cn=admin,dc=example,dc=com" -W -f ubah-budi.ldifDirektif 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:
dn: cn=devel,ou=Groups,dc=example,dc=com
changetype: modify
delete: member
member: uid=aji,ou=People,dc=example,dc=comldapmodify memproses banyak operasi sekaligus dalam satu file. Setiap entry membawa changetype-nya sendiri, dan tiap blok operasi tetap diakhiri strip tunggal:
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/zshSatu 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.
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.
dn: uid=budi,ou=People,dc=example,dc=com
changetype: modrdn
newrdn: uid=budi.santoso
deleteoldrdn: 0newrdn menentukan RDN baru; deleteoldrdn: 1 menghapus atribut RDN lama, sedangkan 0 mempertahankannya sebagai atribut biasa. Jalankan:
ldapmodify -x -D "cn=admin,dc=example,dc=com" -W -f rename-rdn.ldifBentuk command-line-nya dengan 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.
Direktif newsuperior memindahkan entry ke bawah parent baru:
dn: uid=budi,ou=People,dc=example,dc=com
changetype: modrdn
newrdn: uid=budi
deleteoldrdn: 0
newsuperior: ou=Contractors,dc=example,dc=comSetelah 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.
ldapdelete menerima satu atau beberapa DN, atau daftar DN lewat file dengan -f:
ldapdelete -x -D "cn=admin,dc=example,dc=com" -W "uid=test,ou=People,dc=example,dc=com"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:
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.
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:
dn: cn=devel,ou=Groups,dc=example,dc=com
changetype: modify
delete: member
member: uid=aji,ou=People,dc=example,dc=comslapcat untuk cadangan konten database (pembahasan lengkap di episode backup and restore).ldapsearch:ldapsearch -x -D "cn=admin,dc=example,dc=com" -W -b "uid=budi,ou=People,dc=example,dc=com" -s base "(objectClass=*)"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.
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:
ldapmodify diakhiri strip tunggal.deleteoldrdn menentukan apakah atribut RDN lama ikut dihapus.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.