Серверы · 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.com1.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 main2.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-free2.3 Дебиан Бэкпорты
Репозиторий Debian Backports предоставляет более новые пакеты для dovecot.
vi /etc/apt/sources.listДобавьте следующие строки в файл.
# Debian Etch Backports
deb http://www.backports.org/debian etch-backports mainПосле этого обновите apt.
apt-get update3 Необходимые пакеты
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-core3.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 on4.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 restartGet new posts in your inbox
No spam. Unsubscribe anytime.