User Tools

Site Tools


lucid1004:smb:openldap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lucid1004:smb:openldap [2010/08/02 19:16] – created svschwartzlucid1004:smb:openldap [2010/08/02 20:10] (current) svschwartz
Line 10: Line 10:
 zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
  
-cat <<EOFLIST > /tmp/schema_convert.conf+cat <<EOCONFIG > /tmp/schema_convert.conf
 include         /etc/ldap/schema/core.schema include         /etc/ldap/schema/core.schema
 include         /etc/ldap/schema/cosine.schema include         /etc/ldap/schema/cosine.schema
 include         /etc/ldap/schema/inetorgperson.schema include         /etc/ldap/schema/inetorgperson.schema
 include         /etc/ldap/schema/samba.schema include         /etc/ldap/schema/samba.schema
-EOFLIST+EOCONFIG
  
 +# prepare
 rm -rf /tmp/ldif_output rm -rf /tmp/ldif_output
 mkdir /tmp/ldif_output mkdir /tmp/ldif_output
-slaptest -f schema_convert.conf -F /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 \; 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 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 
 </code> </code>
 +
 +Загрузим необходимые схемы на сервер OpenLDAP
 +<code>
 +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
 +</code>
 +
 +На данный момент сервер OpenLDAP имеет все необходимые классы для работы с учетными записями Samba+Posix. Давайте посмотрим что получилось.
 +<code>
 +ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config '(objectCLass=*)' dn
 +</code>
 +
 +Добавим в конфигурацию модуль HDB который будет использоваться для хранения данных
 +<code>
 +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
 +</code>
 +
 +
 +Создадим файл конфигурации нашей базы **example.com.ldif**
 +<code>
 +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
 +</code>
 +
 +Загрузим конфигурацию нашей базы на сервер 
 +<code>
 +ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/${L2}.${L1}.ldif
 +</code>
 +
 +Итак мы установили полноценный сервер OpenLDAP, который готов хранить в себе учетные записи Samba PDC и все необходимые служебные данные для работы с контроллером домена Windows (tm)
  
lucid1004/smb/openldap.1280776584.txt.gz · Last modified: (external edit)