서버 설정 · 7 min read · Sep 09, 2025
Debian Etch에서 Mandriva Directory Server
Debian Etch에서 Mandriva Directory Server
버전 1.1
저자: Oliver Meyer
이 문서는 Debian Etch에서 Mandriva Directory Server (MDS)를 설정하는 방법을 설명합니다. 결과 시스템은 중소기업을 위한 완전한 기능의 사무실 서버를 제공하며, 웹 기반 Mandriva Management Console (MMC)을 통해 쉽게 관리할 수 있습니다.
주요 기능
- MMC를 통한 쉬운 관리
- 시스템 전반에 걸친 OpenLDAP 통합
- SAMBA 기본 도메인 컨트롤러 (PDC)
- Dovecot, Amavis, Spamassassin 및 ClamAV가 포함된 Postfix 메일 서버 (POP3/IMAP/SSL/TLS/Quota)
- BIND DNS 서버
- ISC DHCP 서버
- SquidGuard가 포함된 Squid 웹 프록시
이 방법서는 이론적 배경을 다루지 않는 실용적인 가이드입니다. 이러한 시스템을 설정하는 방법은 여러 가지가 있으며, 이것은 제가 선택한 방법입니다.
서문
이 방법서는 꽤 복잡합니다. 시간을 내어 충분히 읽고 단계를 세심하게 따르십시오. 가장 작은 변동도 설정이 정확하게 작동하지 않을 수 있습니다.
1 준비
1.1 기본 시스템
표준 Debian Etch 시스템을 설정하고 업데이트하십시오. 이 방법서와 구독자에게 제공되는 가상 머신에 대해 다음 구성을 사용했습니다:
호스트 이름: 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그 후 호스트 이름 파일에 호스트 이름을 삽입하십시오…
echo server1.example.com > /etc/hostname… 그리고 시스템을 재부팅하십시오.
reboot시스템이 다시 시작되면 두 명령의 출력…
hostname… 및 …
hostname -f…는 다음과 같아야 합니다:
server1.example.com1.3 파일 시스템 ACL
SAMBA가 Linux 서버와 Windows 클라이언트 간에 파일 시스템 ACL을 매핑할 수 있도록 하려면 해당 마운트 지점에 ACL 지원을 추가해야 합니다.
vi /etc/fstabSAMBA 디렉토리가 저장될 마운트 지점과 SAMBA 사용자의 홈에 “acl” 옵션을 추가하십시오. 제 경우에는 “ / “입니다 - 내용은 다음과 같아야 합니다:
# /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
Debian Volatile 저장소는 표준 Debian 저장소보다 ClamAV 및 Spamassassin에 대한 최신 패키지를 제공합니다.
vi /etc/apt/sources.list다음 줄을 파일에 추가하십시오.
# Debian Volatile
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free2.3 Debian Backports
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표준 Debian 저장소의 실제 dovecot 패키지는 LDAP와 함께 사용할 때 버그가 있으므로 Debian Backports의 dovecot 패키지를 사용해야 합니다.
apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3dHP 프린터를 사용하려면 몇 가지 추가 패키지를 설치하는 것이 좋습니다.
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)
DHCP에서 WINS 설정을 사용하도록 smb.conf를 수정해야 하는지 묻는 질문에 “아니오”를 선택하십시오.
3.2.3 Postfix
일반 구성 유형으로 “인터넷 사이트”를 선택하십시오.
메일 이름으로 “server1.example.com”을 입력하십시오.
3.2.4 Libnss-LDAP
LDAP 서버 URI로 “ldap://127.0.0.1/“를 입력하십시오.
검색 기준으로 “dc=example,dc=com”을 입력하십시오.
LDAP 버전을 선택하십시오. (3)
루트에 대한 LDAP 계정으로 “cn=admin,dc=example,dc=com”을 입력하십시오.
LDAP 관리자의 비밀번호를 입력하십시오. (howtoforge)
3.2.5 Libpam-LDAP
로컬 루트가 데이터베이스 관리자가 되어야 하는지 묻는 질문에 “예”를 선택하십시오.
LDAP 데이터베이스에 로그인해야 하는지 묻는 질문에 “아니오”를 선택하십시오.
루트에 대한 LDAP 계정으로 “cn=admin,dc=example,dc=com”을 입력하십시오.
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.confinetorgperson 스키마 다음에 스키마 파일을 포함하십시오.
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를 활성화하십시오.
schemacheck on4.2 기본 구성
이 단계에서는 패키지 설치 중에 정의한 LDAP 관리자 비밀번호가 암호화된 형태(SSHA)로 필요하므로 암호화합시다.
slappasswd -s %ldap_admin_password%예:
slappasswd -s howtoforge출력은 다음과 같아야 합니다:
{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A기록해 두고 진행하십시오 - LDAP 서버 구성 파일을 엽니다.
vi /etc/ldap/slapd.confLDAP 관리자(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 매개변수는 인덱싱에 사용되는 실제 CPU 수를 설정합니다.
tool-threads 1
#######################################################################
# bdb에 대한 특정 백엔드 지시문:
# 백엔드 특정 지시문은 다른 '백엔드' 지시문이 발생할 때까지 이 백엔드에 적용됩니다.
backend bdb
checkpoint 512 30
#######################################################################
# 'other'에 대한 특정 백엔드 지시문:
# 백엔드 특정 지시문은 다른 '백엔드' 지시문이 발생할 때까지 이 백엔드에 적용됩니다.
#backend
#######################################################################
# 데이터베이스 #1에 대한 특정 지시문, 유형 bdb:
# 데이터베이스 특정 지시문은 다른 '데이터베이스' 지시문이 발생할 때까지 이 데이터베이스에 적용됩니다.
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 패키지의 경우 기본값으로 2MB를 사용하지만 RAM이 충분한 경우 이 값을 업데이트해야 합니다.
dbconfig set_cachesize 0 2097152 0
# Sven Hartge는 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
# userPassword는 기본적으로 소유하는 항목이 인증된 경우 변경할 수 있습니다.
# 다른 사용자는 이를 볼 수 없어야 하며, 아래의 관리 항목만 가능합니다.
# 이러한 액세스 줄은 데이터베이스 #1에만 적용됩니다.
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=example,dc=com" write
by anonymous auth
by self write
by * none
# 지원되는 SASL 메커니즘과 같은 것에 대한 기본에 대한 읽기 액세스를 보장합니다. 이를 통해 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에 대한 특정 지시문, 유형 'other' (bdb일 수도 있음):
# 데이터베이스 특정 지시문은 다른 데이터베이스 지시문이 발생할 때까지 이 데이터베이스에 적용됩니다.
#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새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.