OpenLDAP on Oracle Linux
Устанавливаем необходимые пакеты для настройки OpenLDAP
yum install openldap openldap-servers openldap-clients nss-pam-ldapd
Меняем владельца в /var/lib/ldap:
cd /var/lib/ldap
chown ldap:ldap ./*
Создаем зашифрованный пароль для администратора LDAP
slappasswd -h {SSHA}
New password: password
Re-enter new password:
password {SSHA}lkMShz73MZBic19Q4pfOaXNxpLN3wLRy
Создаем конфигурационный файл для LDAP
Основной конфигурационный файл, который как правило располагается в /etc/openldap/slap.d/mydomain.ldif
include file:///etc/openldap/schema/cosine.ldif
include file:///etc/openldap/schema/nis.ldif
include file:///etc/openldap/schema/inetorgperson.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap
olcModuleload: back_hdb
# Configure the database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=com
olcRootPW: {SSHA}lkMShz73MZBic19Q4pfOaXNxpLN3wLRy
olcDbConfig: set_cachesize 0 10485760 0
olcDbConfig: set_lk_max_objects 2000
olcDbConfig: set_lk_max_locks 2000
olcDbConfig: set_lk_max_lockers 2000
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 1024 10
# Set up access control
olcAccess: to attrs=userPassword
by dn="cn=admin,dc=mydomain,dc=com"
write by anonymous auth
by self write
by * none
olcAccess: to attrs=shadowLastChange
by self write
by * read
olcAccess: to dn.base=""
by * read
olcAccess: to *
by dn="cn=admin,dc=mydomain,dc=com"
write by * read
Добавляем конфигурацию:
# ldapadd -Y EXTERNAL -H ldapi:/// -f mydomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0 adding new entry "cn=module,cn=config" adding new entry "olcDatabase=hdb,cn=config"
Конфигурация об организации
Создаем конфигурацию об организации:
dn: dc=mydomain,dc=com
dc: mydom
objectclass: dcObject
objectclass: organizationalUnit
ou: mydomain.com
# Users
dn: ou=People,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: people
# Groups
dn: ou=Groups,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: groups
Добавляем конфигурацию об организации:
ldapadd -cxWD "cn=admin,dc=mydomain,dc=com" -f mydomaincom.ldif
Enter LDAP Password: admin_password
adding new entry "dc=mydomain,dc=com"
adding new entry "ou=People,dc=mydomain,dc=com"
adding new entry "ou=Groups,dc=mydomain,dc=com"
Создание групп
Создаем файл с настройкой для группы devops:
# Groups
dn: cn=employees,ou=Groups,dc=mydomain,dc=com
cn: devops
gidNumber: 626
objectClass: top
objectclass: posixGroup
Применяем файл с настройкой группы:
ldapadd -cxWD "cn=admin,dc=mydomain,dc=com" -f devops-group.ldif
Enter LDAP Password: admin_password
adding new entry "cn=devops,ou=Groups,dc=mydomain,dc=com"
Проверяем наличие группы по gid = 626
ldapsearch -LLL -x -b "dc=mydomain,dc=com" gidNumber=626
dn: cn=devops,ou=Groups,dc=mydomain,dc=com
cn: devops
gidNumber: 626
objectClass: top
objectClass: posixGroup
Создание пользователя в LDAP
Создание пользователя на сервере LDAP:
useradd -b /nethome -s /sbin/nologin -u 5159 -U user1
id user1 uid=5159(user1) gid=5159(user1) groups=5159(user1)
Создаём файл с настройкой для user1:
# UPG user1
dn: cn=user1,ou=Groups,dc=mydomain,dc=com
cn: user1
gidNumber: 5159
objectclass: top
objectclass: posixGroup
# User user1
dn: uid=suer1,ou=People,dc=mydomain,dc=com
cn: User 1
givenName: User
sn: 1
uid: user1
uidNumber: 5159
gidNumber: 5159
homeDirectory: /home/user1
loginShell: /bin/bash
mail: user1@mydomain.com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
userPassword: {SSHA}x
Применяем:
ldapadd -cxWD cn=admin,dc=mydomain,dc=com -f user1-user.ldif
Enter LDAP Password: admin_password
adding new entry "cn=user1,ou=Groups,dc=mydomain,dc=com"
adding new entry "uid=user1,ou=People,dc=mydomain,dc=com"
Создание и смена пароля пользователю
Задаем пароль, этой же командой его можно сменить:
ldappasswd -xWD "cn=admin,dc=mydomain,dc=com" -S "uid=user1,ou=people,dc=mydomain,dc=com"
New password: user_password
Re-enter new password: user_password
Enter LDAP Password: admin_password
Проверяем наличие пользователя:
ldapsearch -LLL -x -b "dc=mydomain,dc=com" '(|(uid=iser1)(cn=user1))'
Добавление пользователя в группу
dn: cn=company,ou=Groups,dc=mydomain,dc=com
changetype: modify
add: memberUid
memberUid: user1
dn: cn=company,ou=Groups,dc=mydomain,dc=com
changetype: modify
add: memberUid
memberUid: user2
Применяем конфиг добавления пользователя в группу:
ldapmodify -xcWD "cn=admin,dc=mydomain,dc=com" -f add-users.ldif
Enter New Password:
Enter LDAP Password: user_password modifying entry "cn=devops,ou=Groups,dc=mydomain,dc=com"
Проверяем состав пользователей в группе devops
ldapsearch -LLL -x -b "dc=mydomain,dc=com" gidNumber=626
dn: cn=devops,ou=Groups,dc=mydomain,dc=com
cn: devops gidNumber: 626
objectClass: top
objectClass: posixGroup
memberUid: user1
memberUid: user2
Редактирование пользователя
Например, мы хотим изменить поле “mail” пользователя. Подготавливаем LDIF-файл:
dn: cn=user1,ou=Groups,dc=mydomain,dc=com
changetype: modify
replace: mail
mail: user1@mydomain.com
Применяем файл:
ldapmodify -xWD "cn=admin,dc=mydomain,dc=com" -f user1_change_mail.ldif