Membahas cara mengintegrasikan autentikasi sistem Linux dengan LDAP: memahami peran NSS dan PAM, mengonfigurasi SSSD sebagai pendekatan modern, serta mengenal nslcd sebagai solusi legacy untuk user, group, dan login terpusat.

Pada episode 18, kalian memantau kesehatan server LDAP dengan log level, overlay audit, dan cn=Monitor. Episode 19 ini membawa LDAP ke level sistem operasi: bagaimana sebuah mesin Linux mengenali user yang didefinisikan di LDAP, memvalidasi password mereka, dan menciptakan sesi login yang mulus. Inilah integrasi yang paling sering dipakai di dunia nyata — satu user terpusat yang bisa login ke banyak mesin tanpa akun lokal di tiap server.
Linux mengenali user lewat dua lapis sistem yang berbeda tetapi saling bekerja sama: NSS dan PAM.
Alur yang terjadi saat seorang user SSH ke server: sistem memanggil NSS untuk menerjemahkan username menjadi user record (uid, gid, home directory), lalu memanggil PAM untuk memvalidasi password, dan akhirnya membangun sesi — termasuk membuat home directory jika diperlukan. Pemahaman tentang pembagian tanggung jawab ini penting sebelum mengubah apa pun:
| Komponen | Tanggung jawab | Contoh |
|---|---|---|
| NSS | Lookup user dan group | passwd, group, shadow |
| PAM | Autentikasi dan otorisasi sesi | login, sshd, sudo |
| LDAP | Penyimpanan identitas terpusat | OpenLDAP, Active Directory |
| Home directory | Persistensi data user | /home/budi |
Ada dua jalur utama menghubungkan Linux ke LDAP: nss-pam-ldapd (nslcd) yang merupakan pendekatan legacy, dan SSSD yang direkomendasikan untuk instalasi modern. Pilihan di antara keduanya biasanya ditentukan oleh umur infrastruktur dan kebutuhan fitur:
| Aspek | nslcd | SSSD |
|---|---|---|
| Arsitektur | Daemon nslcd terpisah | Daemon sssd dengan provider |
| Caching | Minimal | Bawaan, agresif |
| Offline auth | Terbatas | Didukung penuh |
| Kompleksitas | Sederhana | Lebih banyak opsi |
| Ekosistem | Legacy, stabil | Modern, aktif berkembang |
Aturan praktis: proyek baru gunakan SSSD; lingkungan lama yang sudah terlanjur berjalan di nslcd bisa tetap dipertahankan jika alurnya stabil. Keduanya bisa hidup berdampingan asalkan dipahami.
Pendekatan lama terdiri dari dua paket: libnss-ldapd untuk lookup NSS dan libpam-ldapd untuk autentikasi PAM, yang keduanya bergantung pada daemon nslcd.
sudo apt update
sudo apt install libnss-ldapd libpam-ldapdSelama instalasi, kalian diminta URI server LDAP dan base DN. Konfigurasi lengkap tersimpan di /etc/nslcd.conf:
uri ldap://ldap.example.com
base dc=example,dc=com
binddn cn=system,ou=system,dc=example,dc=com
bindpw secret
nss_map_attribute homeDirectory homeDirectoryuri menunjuk server LDAP, base menentukan basis pencarian, dan binddn adalah akun khusus yang dipakai nslcd untuk melakukan query. Setelah konfigurasi beres, restart daemonnya dengan systemctl restart nslcd.
NSS memberitahu sistem sumber lookup mana yang harus digunakan lewat /etc/nsswitch.conf:
passwd: compat ldap
group: compat ldap
shadow: compat ldapUrutan compat ldap berarti sistem membaca file lokal dulu lalu melirik LDAP. Perhatikan bahwa home directory dan shell tidak disimpan di NSS — itu bagian dari record user yang diambil dari LDAP melalui atribut POSIX.
Untuk autentikasi, modul PAM pam_ldap dihubungkan ke nslcd. Periksa file di /etc/pam.d/common-auth — biasanya berisi baris dengan pam_ldap.so pada posisi kedua setelah pam_unix.so. Nama file bisa bervariasi tergantung distro; periksa direktori /etc/pam.d untuk melihat referensi pam_ldap.
SSSD menggabungkan semua fungsi di atas dalam satu daemon dengan fitur caching dan offline authentication. Instalasinya cukup satu paket:
sudo apt install sssd-ldapKonfigurasi utama ada di /etc/sssd/sssd.conf. Bagian [sssd] mendaftar service dan domain, sedangkan [domain/example.com] berisi detail koneksi LDAP:
[sssd]
domains = example.com
services = nss, pam
config_file_version = 2
[domain/example.com]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldap.example.com
ldap_search_base = dc=example,dc=com
cache_credentials = True
enumerate = Falseid_provider = ldap dan auth_provider = ldap menetapkan LDAP sebagai sumber identitas dan autentikasi. ldap_uri menunjuk server, dan cache_credentials = True mengaktifkan caching yang memungkinkan login offline. Pastikan file sssd.conf berpermission 600 dan dimiliki root — SSSD menolak memulai dengan permission longgar.
Setelah menulis konfigurasi, restart dan aktifkan daemon:
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl enable --now sssdCaching membuat SSSD jauh lebih tangguh daripada nslcd: data user disimpan lokal, sehingga lookup tidak selalu bergantung pada ketersediaan server LDAP. Saat jaringan terputus, user yang sudah pernah login tetap bisa masuk kembali karena kredensialnya ada di cache. Inilah alasan utama SSSD menjadi standar modern untuk integrasi LDAP di server production.
Agar Linux bisa menggunakan user dari LDAP, entry user harus membawa atribut POSIX standar. Tanpa atribut ini, lookup user gagal karena sistem tidak punya uid maupun home directory:
| Atribut | Fungsi |
|---|---|
uid | Login name user |
uidNumber | Nomor user (UID) |
gidNumber | Nomor group primer (GID) |
homeDirectory | Home directory, contoh /home/budi |
loginShell | Shell default, contoh /bin/bash |
gecos | Nama lengkap dan info tambahan |
Pastikan rentang UID di LDAP tidak bentrok dengan user lokal. Kebiasaan umum: user lokal memakai UID di bawah 1000, sementara user LDAP dimulai dari 1000 ke atas atau dari rentang tertentu seperti 10000.
Setelah konfigurasi beres, uji lookup user dari LDAP dengan perintah berikut:
getent passwd budi
getent group develop
id budigetent passwd memanggil NSS untuk menampilkan record user budi. Jika muncul lengkap dengan uid, gid, dan home directory, berarti lookup NSS bekerja. Perintah id budi menampilkan uid, gid primer, dan keanggotaan group — validasi cepat bahwa NSS dan group LDAP berfungsi bersama.
Uji terakhir adalah login nyata lewat SSH atau konsol. Karena sesi login melibatkan PAM, kegagalan lookup NSS biasanya menghasilkan pesan user not found, sedangkan kegagalan PAM ditandai dengan authentication failure. Kalian bisa mempercepat debug dengan mengaktifkan debug di sssd.conf lewat debug_level pada bagian domain, lalu mengamati log SSSD di /var/log/sssd.
User LDAP tidak otomatis punya home directory di tiap mesin. Solusinya adalah modul PAM pam_mkhomedir yang membuat home directory secara otomatis saat pertama kali login.
Aktifkan modul ini pada file PAM yang sesuai, misalnya /etc/pam.d/common-session:
session required pam_mkhomedir.so skel=/etc/skel umask=0022pam_mkhomedir membuat home directory dengan template dari /etc/skel dan umask 0022. Baris ini harus ditempatkan di bagian session PAM, bukan bagian auth. Dengan pola ini, user pertama kali login langsung mendapat home directory berisi file skeleton standar tanpa intervensi admin.
Isi /etc/skel (seperti .bashrc dan .profile) akan disalin ke home directory baru setiap user. Untuk skala besar, home directory biasanya diletakkan di NFS agar data user tersentralisasi — mesin hanya memasang direktori tersebut saat login. Kombinasi LDAP (identitas), pam_mkhomedir (pembuatan awal), dan NFS (persistensi) adalah arsitektur klasik yang masih banyak dipakai hingga kini.
Pada episode 19 ini, kalian menghubungkan Linux ke LDAP untuk autentikasi terpusat: memahami pembagian peran NSS dan PAM, memilih antara nslcd legacy dan SSSD modern, menyusun konfigurasi nsswitch.conf dan sssd.conf, memastikan atribut POSIX tersedia, menguji dengan getent dan login nyata, serta mengotomasi pembuatan home directory dengan pam_mkhomedir.
Inti yang harus dibawa pulang:
uidNumber dan gidNumber, lookup user gagal.getent dulu, baru login nyata, baru kejar error.Di episode 20 berikutnya, kalian mengarahkan LDAP ke layanan komunikasi: email dan address book integration — bagaimana Postfix, Dovecot, dan klien email memakai LDAP sebagai sumber user, alias, dan direktori kontak. Logika autentikasi yang kalian kuasai di episode ini akan dipakai lagi di banyak layanan lain.