CentOS 5.4 x64でSambaとOpenLDAPを使ってPDCサーバを設定

※ AD DCを構築できるCentOS 5.x/6.x対応のSamba4のrpmをそれぞれwingリポジトリで公開しました。こちらをご使用になられた方が構築も楽です。(2013/3/14)
CentOS 6.3 x86_64でSamba4 4.0.3を設定(2台のサーバでレプリケーション) - にわかSEの独り言
※ 下記もご覧下さい。新しいSambaとOpenLDAPの設定です。(2010/1/5)
CentOS 5.4 x64のSamba 3.4.2とOpenLDAP 2.4.19でPDCサーバ設定 - にわかSEの独り言
CentOS 5.4でSambaとOpenLDAPを使って、PDCサーバ(Windows2000のドメインコントローラ相当)を設定する方法をご紹介します。
Sambaのバージョンは、基本はCentOSの標準である3.0.33ですが、このブログでも紹介している3.3.x、3.4.xでも設定方法は変わりません。
- SambaとOpenLDAPのインストール
- Samba用LDAPサーバー操作ツールセットアップ
- 管理者用パスワード取得
- /etc/openldap/slapd.conf編集
前提条件は以下のとおりです。
ドメイン:hoge.com
ドメインコントローラー名:WINGDOMAIN
NetBIOS名:WING-CENTOS
一般ユーザ:wing
あらかじめインストールされているか確認。
# rpm -q samba
# rpm -q openldap-servers
# rpm -q openldap-clients
インストールされていなければ、以下を実施。
# yum -y install samba samba-client openldap-servers openldap-clients
# yum -y install perl-LDAP
必要なPerlモジュールをダウンロードしインストール。
# wget http://packages.sw.be/perl-Crypt-SmbHash/perl-Crypt-SmbHash-0.12-1.2.el5.rf.noarch.rpm
# wget http://packages.sw.be/perl-Digest-SHA1/perl-Digest-SHA1-2.12-2.el5.rf.x86_64.rpm
# wget http://packages.sw.be/perl-Jcode/perl-Jcode-2.07-1.el5.rf.noarch.rpm
# wget http://packages.sw.be/perl-Unicode-Map/perl-Unicode-Map-0.112-1.el5.rf.x86_64.rpm
# wget http://packages.sw.be/perl-Unicode-Map8/perl-Unicode-Map8-0.12-1.el5.rf.x86_64.rpm
# wget http://packages.sw.be/perl-Unicode-String/perl-Unicode-String-2.09-1.2.el5.rf.x86_64.rpm
# wget http://packages.sw.be/perl-Unicode-MapUTF8/perl-Unicode-MapUTF8-1.11-1.2.el5.rf.noarch.rpm
# wget http://packages.sw.be/smbldap-tools/smbldap-tools-0.9.5-1.el5.rf.noarch.rpm
# rpm -ivh perl*
# rpm -ivh smbldap-tools-0.9.5-1.el5.rf.noarch.rpm
# slappasswd -s パスワード -h {MD5}
※表示された結果は、メモすること。
# cp /usr/share/doc/samba-3.0.33/LDAP/samba.schema /etc/openldap/schema/
# vi /etc/openldap/slapd.conf
# 追加
include /etc/openldap/schema/samba.schema
# 変更
suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
↓
suffix "dc=hoge,dc=com"
rootdn "cn=Manager,dc=hoge,dc=com"
# 追加
rootpw ※メモした管理者用パスワード
# 追加
access to attrs=userPassword
by self write
by dn="cn=Manager,dc=hoge,dc=com" write
by anonymous auth
by * none
# 追加
access to *
by dn="cn=Manager,dc=hoge,dc=com" write
by self write
by * read
# vi /etc/openldap/ldap.conf
BASE dc=hoge, dc=com
# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# service ldap start
# vi /usr/share/openldap/migration/migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "padl.com";
↓
$DEFAULT_MAIL_DOMAIN = "hoge.com";
$DEFAULT_BASE = "dc=padl,dc=com";
↓
$DEFAULT_BASE = "dc=hoge,dc=com";
# vi base.ldif
dn: dc=hoge,dc=com
objectClass: dcObject
objectclass: organization
o: hoge Organization
dc: hoge
dn: cn=Manager,dc=hoge,dc=com
objectClass: organizationalRole
cn: Manager
dn: ou=Users,dc=hoge,dc=com
objectClass: organizationalUnit
ou: Users
dn: ou=Groups,dc=hoge,dc=com
objectClass: organizationalUnit
ou: Groups
# ldapadd -h localhost -x -D "cn=Manager,dc=hoge,dc=com" -W -f base.ldif
Enter LDAP Password: パスワード
adding new entry "dc=hoge,dc=com"
adding new entry "cn=Manager,dc=hoge,dc=com"
adding new entry "ou=Users,dc=hoge,dc=com"
adding new entry "ou=Groups,dc=hoge,dc=com"
# rm -rf base.ldif
# useradd wing
# passwd wing
# grep ":5[0-9][0-9]" /etc/passwd > passwd
# /usr/share/openldap/migration/migrate_passwd.pl passwd > passwd.ldif
# vi passwd.ldif
dn: uid=wing,ou=Users,dc=hoge,dc=com
uid: wing
cn: wing
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}~
shadowLastChange: 14348
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 500
homeDirectory: /home/wing
# ldapadd -h localhost -x -D "cn=Manager,dc=hoge,dc=com" -W -f passwd.ldif
Enter LDAP Password: パスワード
adding new entry "uid=wing,ou=Users,dc=hoge,dc=com"
# rm -rf passwd
# rm -rf passwd.ldif
# grep ":5[0-9][0-9]" /etc/group > group
# /usr/share/openldap/migration/migrate_group.pl group > group.ldif
# vi group.ldif
dn: cn=wing,ou=Groups,dc=hoge,dc=com
objectClass: posixGroup
objectClass: top
cn: wing
userPassword: {crypt}x
gidNumber: 500
# ldapadd -h localhost -x -D "cn=Manager,dc=hoge,dc=com" -W -f group.ldif
Enter LDAP Password: パスワード
adding new entry "cn=wing,ou=Groups,dc=hoge,dc=com"
# rm -rf group
# rm -rf group.ldif
# authconfig-tui
[*] LDAP を使用
[*] LDAP 認証を使用
「次へ」
サーバー: ldap://127.0.0.1/
ベース DN: dc=hoge,dc=com
「次へ」
# vi /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = CP932
display charset = UTF-8
workgroup = WINGDOMAIN
server string = Samba Server Version %v
guest account = Guest
add user script = /usr/sbin/smbldap-useradd -m '%u'
delete user script = /usr/sbin/smbldap-userdel -r '%u'
add group script = /usr/sbin/smbldap-groupadd -p '%g'
delete group script = /usr/sbin/smbldap-groupdel '%g'
add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
add machine script = /usr/sbin/smbldap-useradd -w %u
domain logons = yes
os level = 64
preferred master = yes
domain master = yes
wins support = yes
passdb backend = ldapsam:ldap://localhost
ldap suffix = dc=hoge,dc=com
ldap admin dn = cn=Manager,dc=hoge,dc=com
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
ldap passwd sync = yes
ldap ssl = No ※Samba 3.3.xの場合はDefaultがYesになっているので設定
admin users = Administrator
dos filetime resolution = yes
netbios name = WING-CENTOS
security = user
load printers = yes
cups options = raw
encrypt passwords = yes
logon path = \\%L\profiles\%U
logon home =
logon drive = H:
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
write list = administrator wing
guest ok = yes
[Profiles]
profile acls = yes
path = /var/lib/samba/profiles
read only = no
writeable = yes
create mask = 0600
directory mask = 0700
guest ok = yes
browseable = no
# mkdir -p /var/lib/samba
# mkdir -p /var/lib/samba/netlogon
# mkdir -p /var/lib/samba/profiles
# chown -R root:root /var/lib/samba/
# chmod 0777 /var/lib/samba/netlogon
# chmod 1777 /var/lib/samba/profiles
# service smb start
# chkconfig smb on
# chkconfig ldap on
# smbpasswd -w パスワード
# net getlocalsid WINGDOMAIN
※ 表示されたSIDをメモする。
# vi /etc/smbldap-tools/smbldap.conf
SID="S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX"
↓
SID="メモしたSID"
sambaDomain="DOMSMB"
↓
sambaDomain="WINGDOMAIN"
slaveLDAP="ldap.iallanis.info"
↓
slaveLDAP="127.0.0.1"
masterLDAP="ldap.iallanis.info"
↓
masterLDAP="127.0.0.1"
ldapTLS="1"
↓
ldapTLS="0"
suffix="dc=iallanis,dc=info"
↓
suffix="dc=hoge,dc=com"
hash_encrypt="SSHA"
↓
hash_encrypt="MD5"
defaultMaxPasswordAge="45"
↓
# defaultMaxPasswordAge="45"
userSmbHome="\\PDC-SRV\%U"
↓
userSmbHome="\\WING-CENTOS\%U"
userProfile="\\PDC-SRV\profiles\%U"
↓
userProfile="\\WING-CENTOS\profiles\%U"
# vi /etc/smbldap-tools/smbldap_bind.conf
slaveDN="cn=Manager,dc=iallanis,dc=info"
slavePw="secret"
↓
slaveDN="cn=Manager,dc=hoge,dc=com"
slavePw="パスワード"
masterDN="cn=Manager,dc=iallanis,dc=com"
masterPw="secret"
↓
masterDN="cn=Manager,dc=hoge,dc=com"
masterPw="パスワード"
# smbldap-populate -a Administrator -b Guest
※ Administratorのパスワードを入力
# mkdir /home/Administrator
# chmod 700 /home/Administrator
※ iptablesの設定をしている方のみ。
# vi /etc/sysconfig/iptables
以下を追加
# Samba
-A INPUT -p udp --dport 137:138 -j ACCEPT
-A INPUT -p tcp --dport 139:445 -j ACCEPT
# LDAP
-A INPUT -p tcp --dport 389 -j ACCEPT
# reboot
ドメインの参加が出来れば正常です。
ちなみに、Samba 4.0.0からはLDAPなどを統合し、ActiveDirectory(Windows Server 2003相当)ができるらしいですね。
次期バージョンのSambaが楽しみです。
以下、参考リンクです。
Wikipedia(Linux)
Wikipedia(CentOS)
Wikipedia(LDAP)
Wikipedia(OpenLDAP)
Wikipedia(Samba)
Wikipedia(ドメインコントローラ)
- 関連記事
- CentOS 5.4 x64のSamba 3.4.2とOpenLDAP 2.4.19でPDCサーバ設定
- CentOS 5.4 x64にSamba 3.4.2とOpenLDAP 2.4.19をインストール
- CentOS 5.4 x64でSambaとOpenLDAPを使ってPDCサーバを設定
- 続・CentOS 5.4 x64でVMware Playerを設定
- CentOS 5.4 x64でMySQLとphpMyAdminを設定










