Устанавим сервер OpenLDAP и дополнительные пакеты для начала работы

apt-get update
apt-get install slapd ldap-utils samba-doc

Конвертируем схему samba.schema в формат ldif понятный серверу OpenLDAP

zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

cat <<EOCONFIG > /tmp/schema_convert.conf
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema
EOCONFIG

# prepare
rm -rf /tmp/ldif_output
mkdir /tmp/ldif_output

# generate ldif files
slaptest -f /tmp/schema_convert.conf -F /tmp/ldif_output

# copy generated ldif file to slapd directory
find /tmp/ldif_output -type f -name '*samba.ldif' -exec cp {} /etc/ldap/schema/samba.ldif \;

# cut the crap
echo -e '1c\ndn: cn=samba,cn=schema,cn=config\n.\n3c\ncn: samba\n.\n$n\n-6,$d\nwq' | ed /etc/ldap/schema/samba.ldif

# clean up
rm -rf /tmp/ldif_output 

Загрузим необходимые схемы на сервер OpenLDAP

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif

На данный момент сервер OpenLDAP имеет все необходимые классы для работы с учетными записями Samba+Posix. Давайте посмотрим что получилось.

ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config '(objectCLass=*)' dn

Добавим в конфигурацию модуль HDB который будет использоваться для хранения данных

cat <<EOCONFIG > /tmp/mod_hdb.ldif
# Load dynamic backend modules if it is not already there
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
EOCONFIG

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/mod_hdb.ldif

Создадим файл конфигурации нашей базы example.com.ldif

PASSWORD=secret
# не забудьте сгенерировать хеш пароля с помощью утилиты slappasswd
L1=com
L2=example

cat <<EOCONFIG > /tmp/${L2}.${L1}.ldif
# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=${L2},dc=${L1}
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=${L2},dc=${L1}
olcRootPW: ${PASSWORD}
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=${L2},dc=${L1}" write by anonymous auth by self write by * none
olcAccess: to attrs=sambaLMPassword by dn="cn=admin,dc=${L2},dc=${L1}" write by anonymous auth by self write by * none
olcAccess: to attrs=sambaNTPassword by dn="cn=admin,dc=${L2},dc=${L1}" 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=${L2},dc=${L1}" write by * read

EOCONFIG

Загрузим конфигурацию нашей базы на сервер

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/${L2}.${L1}.ldif

Итак мы установили полноценный сервер OpenLDAP, который готов хранить в себе учетные записи Samba PDC и все необходимые служебные данные для работы с контроллером домена Windows ™

 
lucid1004/smb/openldap.txt · Last modified: 2012/01/11 11:24 (external edit)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki