Daha önceki yazımız genel olarak LDAP ve OpenLDAP yapılandırması üzerineydi. Bu yazıda ise önceki yazıdaki alt yapıya göre Linux kullanıcılarını OpenLDAP üzerinden yetkilendirme anlatılacaktır.
Bu yazıyı okumadan önce mutlaka önceki yazıyı okumalısınız. Bu örnekte OpenLDAP sunucusu, OpenLDAP üzerinden yetkilendirme yapacak Linux istemci makinasına üzerine kurulmuştur. Dolayısıyla LDAP sunucu olarak 127.0.0.1 kullanılmıştır.
Kullanıcı yetkilendirmek için nss_ldap paketinin kurulması gerekir. Redhat’de bu paket nss_ldap ve pam_ldap modüllerini içerir. nss (Name Service Switch) passwd, group ve host gibi bilgilere nasıl erişileceğini tanımlarken, pam (Pluggable Authentication Modules) ise yetkilendirme işlemini yapar. Aşağıdaki komutla nss_ldap paketi kurulu değilse kurulur.
yum install nss_ldap
/etc/ldap.conf dosyasına aşağıdaki satırlar eklenir.
base dc=example,dc=com
rootbinddn cn=root,dc=deneme,dc=com
uri ldap://127.0.0.1/
ssl no
tls_cacertdir /etc/openldap/cacerts
scope one
pam_filter objectclass=posixaccount
pam_login_attribute uid,
pam_member_attribute gid
pam_password md5
nss_base_passwd ou=People,dc=deneme,dc=com?one
nss_base_shadow ou=People,dc=deneme,dc=com?one
nss_base_group ou=Group,dc=deneme,dc=com?one

LDAP arama seviyeleri (scope)
/etc/ldap.secret dosyasına ldap yönetici parolası yazılır. Dosya izni 600 yapılır.
echo secret > /etc/ldap.secret
chmod 600 /etc/ldap.secret
/etc/nsswitch.conf dosyasındaki aşağıdaki satırlara ldap parametresi eklenir.
passwd: files
shadow: files
group: files
ldap değerlerini ekledikten sonra kayıtlar aşağıdaki gibi gözükmelidir.
passwd: files ldap
shadow: files ldap
group: files ldap
cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_succeed_if.so uid < 500 quiet
account sufficient pam_ldap.so
account required pam_ldap.so
#account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_first_pass
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_mkhomedir.so skel=/etc/skel umask=0022 silent
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
Mevcut kullanıcı ve parola bilgilerini veritabanına atmak için /usr/share/openldap/migration/ altındaki scriptler kullanılabilir.
cd /usr/share/openldap/migration/
vi migrate_common.ph
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "deneme.com";
# Default base
$DEFAULT_BASE = "dc=deneme,dc=com";
$EXTENDED_SCHEMA = 1;
mkdir -p /root/ldap/migration
./migrate_base.pl >/root/ldap/migration/base.ldif
more /root/ldap/migration/base.ldif
dn: dc=deneme,dc=com
dc: deneme
objectClass: top
objectClass: domain
objectClass: domainRelatedObject
associatedDomain: deneme.com
dn: ou=Hosts,dc=deneme,dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnit
objectClass: domainRelatedObject
associatedDomain: deneme.com
./migrate_group.pl /etc/group >/root/ldap/migration/group.ldif
more /root/ldap/migration/group.ldif
dn: cn=root,ou=Group,dc=deneme,dc=com
objectClass: posixGroup
objectClass: top
cn: root
userPassword: {crypt}x
gidNumber: 0
ETC_SHADOW=/etc/shadow
./migrate_passwd.pl /etc/passwd > /root/ldap/migration/passwd.ldif
Son olarak yukarıda oluşturulan ldiff dosyaları ldapadd komutu ile eklenir.
Son Yorumlar