Серверы · 8 min read · Sep 09, 2025

Сервер каталогов Mandriva на Debian Etch

Сервер каталогов Mandriva на Debian Etch

Версия 1.1
Автор: Оливер Мейер

Этот документ описывает, как установить сервер каталогов Mandriva (MDS) на Debian Etch. Полученная система предоставляет полнофункциональный офисный сервер для малых и средних компаний - легко администрируемый через веб-интерфейс Mandriva Management Console (MMC).

Основные функции

  • Легкое администрирование через MMC
  • Интеграция OpenLDAP по всей системе
  • SAMBA Основной контроллер домена (PDC)
  • Почтовый сервер Postfix с Dovecot, Amavis, Spamassassin и ClamAV (POP3/IMAP/SSL/TLS/Квота)
  • DNS-сервер BIND
  • DHCP-сервер ISC
  • Веб-прокси Squid с SquidGuard

Этот howto является практическим руководством без каких-либо гарантий - он не охватывает теоретические основы. Существует множество способов настройки такой системы - это тот способ, который я выбрал.

Предисловие

Этот howto довольно сложен. Пожалуйста, уделите время, прочитайте его внимательно и следуйте шагам тщательно. Даже небольшое отклонение может привести к тому, что ваша настройка не будет работать корректно.

1 Подготовка

1.1 Базовая система

Настройте стандартную систему Debian Etch и обновите её. Я использовал следующую конфигурацию для этого howto и прикрепленной виртуальной машины, доступной для наших подписчиков:

Имя хоста: server1.example.com
Домен SAMBA: EXAMPLE
IP: 192.168.0.100
Шлюз: 192.168.0.2
Все пароли: howtoforge

1.2 Имя хоста

Отредактируйте файл hosts - назначьте имя хоста IP сервера.

vi /etc/hosts

Он должен выглядеть так:

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Следующие строки желательны для хостов, поддерживающих IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

После этого вставьте имя хоста в файл hostname …

echo server1.example.com > /etc/hostname

… и перезагрузите систему.

reboot

Когда система снова запустится, вывод обеих команд …

hostname

… и …

hostname -f

… должен быть:

server1.example.com

1.3 ACL файловой системы

Чтобы SAMBA могла сопоставлять ACL файловой системы между сервером Linux и клиентами Windows, вам нужно добавить поддержку ACL к соответствующей точке монтирования.

vi /etc/fstab

Добавьте опцию “ acl “ к точке монтирования, где будут храниться директории SAMBA и где у пользователей SAMBA будут их домашние каталоги. В моем случае это “ / “ - содержимое должно выглядеть так:

# /etc/fstab: статическая информация о файловой системе.
#
# <файловая система> <точка монтирования>   <тип>  <опции>       <дамп>  <передача>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,acl,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

После этого перемонтируйте точку монтирования, чтобы изменения вступили в силу.

mount -o remount /

Если все прошло хорошо, команда …

mount -l

… должна показать опцию “ acl “ для соответствующей точки монтирования:

/dev/sda1 on / type ext3 (rw,acl,errors=remount-ro)

2 Репозитории

2.1 MDS

Репозиторий MDS предоставляет пакеты, связанные с MDS, а также исправленные пакеты для bind9 и dhcp3.

vi /etc/apt/sources.list

Добавьте следующие строки в файл.

# Репозиторий MDS  
deb http://mds.mandriva.org/pub/mds/debian etch main

2.2 Дебиан Волатильный

Репозиторий Debian Volatile предоставляет более новые пакеты для ClamAV и Spamassassin, чем стандартный репозиторий Debian.

vi /etc/apt/sources.list

Добавьте следующие строки в файл.

# Debian Volatile  
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

2.3 Дебиан Бэкпорты

Репозиторий Debian Backports предоставляет более новые пакеты для dovecot.

vi /etc/apt/sources.list

Добавьте следующие строки в файл.

# Debian Etch Backports  
deb http://www.backports.org/debian etch-backports main

После этого обновите apt.

apt-get update

3 Необходимые пакеты

3.1 Установка

Установите необходимые пакеты для этой настройки.

apt-get install mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent python-mmc-plugins-tools python-mmc-base python-mmc-mail python-mmc-network python-mmc-proxy python-mmc-samba postfix postfix-ldap sasl2-bin libsasl2 libsasl2-modules amavisd-new libdbd-ldap-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl lzop nomarch zoo clamav clamav-daemon gzip bzip2 unzip unrar-free unzoo arj spamassassin libnet-dns-perl razor pyzor dcc-client slapd ldap-utils libnss-ldap libpam-ldap dhcp3-server dhcp3-server-ldap bind9 samba smbclient smbldap-tools cupsys cupsys-client foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters foomatic-filters-ppds fontconfig hpijs-ppds linuxprinting.org-ppds

Актуальные пакеты dovecot в стандартном репозитории Debian имеют ошибку в сочетании с LDAP - поэтому вам нужно использовать пакеты dovecot из Debian Backports.

apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d

Если вы хотите использовать принтеры HP, рекомендуется установить еще несколько пакетов.

apt-get install hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62-dev libsnmp9-dev lsb-core

3.2 Конфигурация

Во время установки новых пакетов вам будет задано несколько вопросов - ответьте на них следующим образом.

3.2.1 LDAP

Введите пароль для администратора LDAP и подтвердите его. ( howtoforge)

3.2.2 Samba

Введите имя для вашего домена. ( EXAMPLE)
Выберите “ Нет “, когда вас спросят, следует ли изменять smb.conf для использования настроек WINS из DHCP.

3.2.3 Postfix

Выберите “ Интернет-сайт “ в качестве общего типа конфигурации.
Введите “ server1.example.com “ в качестве имени почты.

3.2.4 Libnss-LDAP

Введите “ ldap://127.0.0.1/ “ в качестве URI сервера LDAP.
Введите “ dc=example,dc=com “ в качестве имени для базового поиска.
Выберите версию LDAP. ( 3)
Введите “ cn=admin,dc=example,dc=com “ в качестве учетной записи LDAP для root.
Введите пароль для администратора LDAP. ( howtoforge)

3.2.5 Libpam-LDAP

Выберите “ Да “, когда вас спросят, должен ли локальный root быть администратором базы данных.
Выберите “ Нет “, когда вас спросят, требует ли база данных LDAP входа.
Введите “ cn=admin,dc=example,dc=com “ в качестве учетной записи LDAP для root.
Введите пароль для администратора LDAP. ( howtoforge)

4 Конфигурация LDAP

4.1 Файлы схемы

Сначала скопируйте файлы схемы для MMC, почты, SAMBA, принтера, DNS и DHCP в директорию схем LDAP.

cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/  
cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

Затем включите файлы схемы в конфигурацию LDAP

vi /etc/ldap/slapd.conf

Включите файлы схемы после схемы inetorgperson.

include /etc/ldap/schema/mmc.schema  
include /etc/ldap/schema/samba.schema  
include /etc/ldap/schema/printer.schema  
include /etc/ldap/schema/mail.schema  
include /etc/ldap/schema/dnszone.schema  
include /etc/ldap/schema/dhcp.schema

Включите проверку схемы (под файлами схемы).

schemacheck on

4.2 Базовая конфигурация

На этом этапе вам понадобится пароль администратора ldap (который вы определили во время установки пакета на шаге 3) в зашифрованном виде (SSHA) - давайте зашифруем его.

slappasswd -s %ldap_admin_password%

Например:

slappasswd -s howtoforge

Вывод должен выглядеть так:

{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Запишите его и продолжайте - откройте файл конфигурации сервера LDAP.

vi /etc/ldap/slapd.conf

Найдите закомментированную строку с записью для администратора LDAP (rootdn) …

# rootdn "cn=admin,dc=example,dc=com"

… и закомментируйте её. После этого добавьте новую строку сразу под ней. Вам нужно ввести зашифрованный пароль администратора ldap, который вы сгенерировали в начале этого шага.

rootpw %encrypted_ldap_admin_password%

Например:

rootpw {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Теперь нам нужно изменить параметры индексации для базы данных. Найдите следующую запись:

# Параметры индексации для базы данных #1

Удалите строку ниже …

index objectClass eq

… и вставьте следующие строки:

index objectClass,uidNumber,gidNumber eq  
index cn,sn,uid,displayName pres,sub,eq  
index memberUid,mail,givenname eq,subinitial  
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq  
index zoneName,relativeDomainName eq  
index dhcpHWAddress,dhcpClassData eq

Теперь добавьте SAMBA в список доступа для базы данных. Найдите следующую строку:

access to attrs=userPassword,shadowLastChange

Измените её так, чтобы она выглядела следующим образом:

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

На этом этапе файл конфигурации сервера LDAP должен выглядеть так:

# Это основной файл конфигурации slapd. Смотрите slapd.conf(5) для получения дополнительной информации о параметрах конфигурации.
#######################################################################
# Глобальные директивы:
# Разрешенные функции
#allow bind_v2
# Определения схемы и objectClass
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/mmc.schema
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/printer.schema
include         /etc/ldap/schema/mail.schema
include         /etc/ldap/schema/dnszone.schema
include         /etc/ldap/schema/dhcp.schema

schemacheck     on

# Где находится файл pid. Скрипт init.d не остановит сервер, если вы измените это.
pidfile         /var/run/slapd/slapd.pid

# Список аргументов, которые были переданы серверу
argsfile        /var/run/slapd/slapd.args

# Читайте slapd.conf(5) для возможных значений
loglevel        0

# Где хранятся динамически загружаемые модули
modulepath      /usr/lib/ldap
moduleload      back_bdb

# Максимальное количество записей, которые возвращаются для операции поиска
sizelimit 500

# Параметр tool-threads устанавливает фактическое количество процессоров, используемых для индексации.
tool-threads 1

#######################################################################
# Специфические директивы для бэкенда bdb:
# Специфические директивы для бэкенда применяются к этому бэкенду до тех пор, пока не произойдет другая директива 'backend'
backend         bdb
checkpoint 512 30

#######################################################################
# Специфические директивы для 'другого':
# Специфические директивы для бэкенда применяются к этому бэкенду до тех пор, пока не произойдет другая директива 'backend'
#backend                <другой>

#######################################################################
# Специфические директивы для базы данных #1, типа bdb:
# Специфические директивы для базы данных применяются к этой базе данных до тех пор, пока не произойдет другая директива 'database'
database        bdb

# База вашего каталога в базе данных #1
suffix          "dc=example,dc=com"

# Директива rootdn для указания суперпользователя в базе данных. Это необходимо для syncrepl.
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

# Где физически хранятся файлы базы данных для базы данных #1
directory       "/var/lib/ldap"

# Для пакета Debian мы используем 2 МБ по умолчанию, но обязательно обновите это значение, если у вас много ОЗУ
dbconfig set_cachesize 0 2097152 0

# Свен Хартге сообщил, что ему пришлось установить это значение невероятно высоким, чтобы slapd вообще заработал. Смотрите http://bugs.debian.org/303057 для получения дополнительной информации.
# Количество объектов, которые могут быть заблокированы одновременно.
dbconfig set_lk_max_objects 1500

# Количество блокировок (как запрашиваемых, так и предоставленных)
dbconfig set_lk_max_locks 1500

# Количество блокировщиков
dbconfig set_lk_max_lockers 1500

# Параметры индексации для базы данных #1
index      objectClass,uidNumber,gidNumber                  eq
index      cn,sn,uid,displayName                            pres,sub,eq
index      memberUid,mail,givenname                         eq,subinitial
index      sambaSID,sambaPrimaryGroupSID,sambaDomainName    eq
index      zoneName,relativeDomainName                  eq 
index      dhcpHWAddress,dhcpClassData                      eq

# Сохраните время, когда запись была изменена, для базы данных #1
lastmod         on

# Где хранить журналы реплик для базы данных #1
# replogfile    /var/lib/ldap/replog
# Пароль пользователя по умолчанию может быть изменен
# запись, владеющая им, если они аутентифицированы.
# Другие не должны иметь возможности видеть его, кроме
# записи администратора ниже
# Эти строки доступа применяются только к базе данных #1
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none

# Обеспечьте доступ на чтение к базе для таких вещей, как
# supportedSASLMechanisms.  Без этого у вас могут
# возникнуть проблемы с SASL, не зная, какие
# механизмы доступны и тому подобное.
# Обратите внимание, что это также охватывается 'access to *'
# ACL ниже, но если вы измените это, как люди
# обычно делают, вам все равно нужно будет это, если вы
# хотите, чтобы SASL (и, возможно, другие вещи) работали
# счастливо.
access to dn.base="" by * read

# Администратор dn имеет полный доступ на запись, все остальные
# могут читать все.
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * read

# Для поддержки Netscape Roaming каждый пользователь получает
# роуминг
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=com" write
#        by dnattr=owner write

#######################################################################
# Специфические директивы для базы данных #2, типа 'другой' (может быть bdb тоже):
# Специфические директивы для базы данных применяются к этой базе данных до тех пор, пока не произойдет другая директива 'database'
#database        <другой>

# База вашего каталога для базы данных #2
#suffix         "dc=debian,dc=org"

Кроме того, вам нужно отредактировать файл конфигурации LDAP.

vi /etc/ldap/ldap.conf

Добавьте следующие строки:

host 127.0.0.1
base dc=example,dc=com

После этого перезапустите сервер LDAP.

/etc/init.d/slapd restart
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.