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.

0 Response to “Linux’da kullanıcıları OpenLDAP üzerinden yetkilendirme”