Samba, LDAP · 2 min read · Dec 11, 2025
Контроллер домена Samba на CentOS 5.x с бэкендом LDAP
Контроллер домена Samba на CentOS 5.x с бэкендом LDAP
Это покажет вам, как настроить контроллер домена Samba с локальным бэкендом LDAP, используя CentOS 5.x (протестировано на 5.3, все еще успешно работает на 5.4). Включает веб-интерфейс для управления пользователями/группами LDAP и т.д.
Январь 2010 – Теперь с поддержкой входа в домен Windows 7 (см. конец руководства).
Отключить selinux:
Это только создаст проблемы, я не собираюсь возиться с SELinux в этом руководстве, кроме как отключить его.
echo 0 >/selinux/enforceВ файле /etc/sysconfig/selinux установите:
SELINUX=disabledУстановите некоторые инструменты
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum update
yum install openldap-servers nss_ldap samba httpd openssl mod_ssl mysql mysql-server php php-xml php-ldap php-mysql php-pdo php-cli php-common smbldap-toolsУстановка smbldap-tools таким образом должна установить все зависимые модули perl, однако версия, доступная в yum, имеет некоторые ошибки, поэтому мы обновим до последней версии позже, сохранив зависимости, но перезаписав пакет smbldap-tools:
rpm -Uvh http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5-1.noarch.rpmНастройте имя хоста
Для наших целей в этом руководстве мы называем имя хоста сервера “dc1” и домен “DOMAINNAME”. Примечание: Если вы хотите использовать ваше fqdn для вашего домена Samba, где бы вы ни видели, dc=DOMAINNAME ниже, замените его на dc=example,dc=com, предполагая, что ваше fqdn это example.com. Также обратите внимание, что “root” будет именем пользователя администратора samba, если вам это не нравится, измените его также. Связанные строки: cn=root и cn: root
В файле /etc/hosts добавьте или замените вашу строку (следуя формату файла, предполагая, что 192.168.0.5 это доступный по сети IP вашего сервера):
192.168.0.5 dc1.DOMAINNAME dc1Установите ваше имя хоста в командной строке:
hostname dc1.DOMAINNAMEСгенерируйте главный пароль и настройте ldap
slappasswdЗапомните вывод slappasswd, вы вставите его в slapd.conf через минуту.
mv -f /etc/openldap/slapd.conf /etc/openldap/slapd.conf.distВставьте следующий текст в /etc/openldap/slapd.conf:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
suffix "dc=DOMAINNAME"
rootdn "cn=root,dc=DOMAINNAME"
rootpw {SSHA}TTzshhAbmZPPb8F2s7sgf9B+IrZt+nUD
password-hash {SSHA}
directory /var/lib/ldap
index cn,sn,uid,displayName pres,sub,eq
index uidNumber,gidNumber eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index objectClass pres,eq
index default subОбратите внимание на строку rootpw в приведенном выше тексте, именно туда вы вставляете ваш вывод из slappasswd.
cp /usr/share/doc/samba-3.*/LDAP/samba.schema /etc/openldap/schema/
cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
chmod 600 /var/lib/ldap/DB_CONFIGВставьте следующий текст в /etc/openldap/init.ldif:
dn: dc=DOMAINNAME
objectclass: dcObject
objectclass: organization
o: CentOS Directory Server
dc: DOMAINNAME
dn: cn=root,dc=DOMAINNAME
objectclass: organizationalRole
cn: root
slapadd -l /etc/openldap/init.ldif
chown -R ldap:ldap /var/lib/ldap
chmod 600 /var/lib/ldap/*
slapcatslapcat должен выдать что-то очень похожее на следующий вывод:
dn: dc=DOMAINNAME
objectClass: dcObject
objectClass: organization
o: CentOS Directory Server
dc: DOMAINNAME
structuralObjectClass: organization
entryUUID: 717d1b1e-ce90-102d-88c3-df22563ebfee
creatorsName: cn=root,dc=DOMAINNAME
modifiersName: cn=root,dc=DOMAINNAME
createTimestamp: 20090506134920Z
modifyTimestamp: 20090506134920Z
entryCSN: 20090506134920Z#000000#00#000000
dn: cn=root,dc=DOMAINNAME
objectClass: organizationalRole
cn: root
structuralObjectClass: organizationalRole
entryUUID: 71858556-ce90-102d-88c4-df22563ebfee
creatorsName: cn=root,dc=DOMAINNAME
modifiersName: cn=root,dc=DOMAINNAME
createTimestamp: 20090506134920Z
modifyTimestamp: 20090506134920Z
entryCSN: 20090506134920Z#000001#00#000000
service ldap start
chkconfig ldap on
ldapsearch -x -b "dc=DOMAINNAME"Вывод от ldapsearch должен быть очень похож на следующий:
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# DOMAINNAME
dn: dc=DOMAINNAME
objectClass: dcObject
objectClass: organization
o: CentOS Directory Server
dc: DOMAINNAME
# root, DOMAINNAME
dn: cn=root,dc=DOMAINNAME
objectClass: organizationalRole
cn: root
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
Get new posts in your inbox
No spam. Unsubscribe anytime.