Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color

openmyhand.com

首頁 arrow 平台專案 arrow Linux替代專案 arrow 第四篇 PDC (Samba+OpenLDAP)
第四篇 PDC (Samba+OpenLDAP) PDF 列印 E-mail
會員評價: / 11
佳 
作者 lawrence   
2007/01/03, Wednesday

   此文以Samba + OpenLdap 建立 PDC (Primary Domain Controller), 基本可實現NT 4.0的功能. 此文參考自Fandy網上(www.nseasy.net) 的多篇文章再加以本人實踐修改而成, 如有沖突,敬請通知修改.

內容與BDC, Mail Server , File Server 幾篇文章有所關聯,

基本環境說明:
Linux OS : CentOS Linux 4.4
Domain name: openmyhand.com
IP: PDC             192.168.100.1
     BDC             192.168.100.2
     Mail Server    192.168.100.3
     File Server     192.168.100.4

Setp 1檢測所需軟件包

需要軟件清單 :

db4-4.2.52-7.1.i386.rpm

db4-utils-4.2.52-7.1.i386.rpm

db4-devel-4.2.52-7.1.i386.rpm

openldap-2.2.13-6.4E.i386.rpm

openldap-devel-2.2.13-6.4E.i386.rpm

openldap-servers-2.2.13-6.4E.i386.rpm

openldap-clients-2.2.13-6.4E.i386.rpm

nss_ldap-226-13.i386.rpm

samba-3.0.10-1.4E.9.i386.rpm

samba-client-3.0.10-1.4E.9.i386.rpm

samba-common-3.0.10-1.4E.9.i386.rpm

perl-Digest-SHA1-2.07-5.i386.rpm

perl-LDAP-0.31-5.noarch.rpm 

perl-XML-SAX-0.12-7.noarch.rpm

perl-Crypt-SmbHash-0.12-1.2.el4.rf.noarch.rpm

smbldap-tools-0.9.1-1.2.el4.rf.noarch.rp

----------------------------------------------------------------------------

是否安裝, 可以用以下命令查詢:

rpm -qa | grep db4

rpm -qa | grep openldap

rpm -qa | grep nss_ldap

rpm -qa | grep samba

rpm -qa | grep perl-Digest

rpm -qa | grep perl-LDAP

rpm -qa | grep perl-XML-SAX

rpm -qa | grep perl-Crypt-SmbHash

rpm -qa | grep smbldap-tools

如果沒有安裝, 請從CentOS4.4安裝光盤找到相應軟件來安裝,

安裝方法是 rpm –vih 軟件名.

 

其中

perl-Crypt-SmbHash-0.12-1.2.el4.rf.noarch.rpm

smbldap-tools-0.9.1-1.2.el4.rf.noarch.rpm

需要另行安裝.

 

詳細操作:

rpm -vih perl-Crypt-SmbHash-0.12-1.2.el4.rf.noarch.rpm

rpm -vih smbldap-tools-0.9.1-1.2.el4.rf.noarch.rpm

-----------------------------------------------------------------------------

 

Setp 2系統基本設定

 

1. 設定電腦IP地址,  修改 /etc/sysconfig/network-scripts/ifcfg-eth0

詳細操作:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.100.1

NETMASK=255.255.255.0

GATEWAY=192.168.100.1

 

2. 設定電腦名稱, 修改 /etc/sysconfig/network

詳細操作:

HOSTNAME=pdc.openmyhand.com 

 

3. 設定電腦名稱與IP的對應關系,  修改 /etc/hosts

詳細操作:

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1                  localhost.localdomain localhost

192.168.100.1          pdc.openmyhand.com pdc

192.168.100.2          bdc.openmyhand.com bdc

192.168.100.3          mail.openmyhand.com mail

192.168.100.4          file.openmyhand.com file

 

4. 重新啟動電腦, 使設定生效

詳細操作 :

# reboot

 

Setp 3設定系統驗證

       

運行setup 進入設定畫面

詳細操作:

# setup

      

 

選擇 Authentication configuration ,  Enter  進入下一畫面

 

 

 Space  , 選擇

[*] Cache Information

[*] Use LDAP

[*] Use MD5 Passwords

[*] Use Shadow Passwords

[*] Use LDAP Authentication

然後去Next ,  Enter  進入下一畫面.

 

 

Base DN: 改成相應的功能變數名稱,

: openmyhand.com           改為  dc=openmyhand,dc=com

 

然後去OK ,  Enter  退回主畫面.

 

 

然後去Quit ,  Enter  退出設定程式.

 

Setp 4安裝LDAP (Master)

 

1. 複製samba.schema檔到 /etc/openldap/schema/ 目錄下

(添加ldap所需要的samba認證的資料檔到schema目錄)

詳細操作:

# cp /usr/share/doc/samba-3.0.10/LDAP/samba.schema  /etc/openldap/schema/

 

2. 修改/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

 

suffix                "dc=my-domain,dc=com"

rootdn               "cn=Manager,dc= my-domain,dc=com"

更改為:

suffix                "dc=openmyhand,dc=com"            #定義ldap搜索的域

rootdn               "cn=root,dc=openmyhand,dc=com"    #定義ldap的管理DN

 

# rootpw           secret

更改為

rootpw              lawrence        #設置管理DN的密碼

 

index objectClass                                         eq,pres

index ou,cn,mail,surname,givenname           eq,pres,sub

index uidNumber,gidNumber,loginShell        eq,pres

index uid,memberUid                                   eq,pres,sub

index nisMapName,nisMapEntry                  eq,pres,sub

更改為

index   objectClass,uidNumber,gidNumber               eq

index   cn,sn,uid,displayName                                   pres,sub,eq

index   memberUid,mail,givenname                           eq,subinitial

index   sambaSID,sambaPrimaryGroupSID,sambaDomainName   eq

 

#在最下添加以下內容, 注意書寫格式

 

replogfile /var/lib/ldap/openldap-slave.replog        # (設定BDC的相關資料)

replica host=bdc.openmyhand.com.cn:389

      binddn="cn=root,dc=openmyhand,dc=com"

      bindmethod=simple credentials=lawrence      #管理DN的密碼

 

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

      by self write

      by anonymous auth

      by * none

access to *

      by * read

 

 

3. 修改 /etc/openldap/ldap.conf

配置內容:

LS_CACERTDIR /etc/openldap/cacerts不使用TLS服務項目

更改為

# TLS_CACERTDIR /etc/openldap/cacerts

 

4. 修改 /etc/ ldap.conf

配置內容:

TLS_CACERTDIR /etc/openldap/cacerts

更改為

# TLS_CACERTDIR /etc/openldap/cacerts

 

#最下添加Base DN的設定, 注意書寫格式

#: openmyhand.com      改為  dc=openmyhand,dc=com

rootbinddn cn=root,dc=openmyhand,dc=com

 

nss_base_passwd    ou=Users,dc=openmyhand,dc=com?one

nss_base_passwd    ou=Computers,dc=openmyhand,dc=com?one

nss_base_shadow    ou=Users,dc=openmyhand,dc=com?one

nss_base_group      ou=Groups,dc=openmyhand,dc=com?one

 

 

設定pam_ldap模組間的DN密碼:(其中lawrence DN密碼)

 

配置內容:

# echo lawrence > /etc/ldap.secret

# chmod 600 /etc/ldap.secret

 

Setp 5測試LDAP配置是否正確

 

          1. 重新啟動LDAP

詳細操作 :

# service ldap restart

 

Stopping slapd:                                                    [FAILED]

Checking configuration files for slapd: config file testing succeeded

Starting slapd:                                                      [  OK  ]

 

         2. 測試port是否啟動

詳細操作 :

# telnet localhost 389

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

^]    (Ctrl + ])

telnet> quit

Connection closed.

 

         3. 查詢LDAP 目錄內容:

詳細操作 :

# ldapsearch -x 127.0.0.1 -b "dc=openmyhand,dc=com"

 

#輸出結果如下:

# extended LDIF

#

# LDAPv3

# base <dc=openmyhand,dc=com> with scope sub

# filter: (objectclass=*)

# requesting: 127.0.0.1

#

 

# search result

search: 2

result: 32 No such object

 

# numResponses: 1

 

Setp 6配置Samba 作 PDC

 

          1.  配置samba 的設定文檔 /etc/samba/smb.conf, 詳細內容如下:

配置內容:

################ Global parameters ####################

[global]

workgroup = openmyhand.com

netbios name = PDC

server string = PDC Server

log file = /var/log/samba/log.%m

security = user

encrypt passwords = Yes

obey pam restrictions = No

ldap passwd sync = Yes

log level = 3

syslog = 0

max log size = 100000

time server = Yes

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

mangling method = hash2

Dos charset = UTF-8

Unix charset = UTF-8

logon script = %U.bat

logon drive = H:

logon home = \\%L\%u

domain logons = yes

os level = 65

domain master = yes

preferred master = yes

local master = yes

passdb backend = ldapsam:ldap://127.0.0.1/

ldap admin dn = cn=root,dc=openmyhand,dc=com

ldap suffix = dc=openmyhand,dc=com

ldap group suffix = ou=Groups

ldap user suffix = ou=Users

ldap machine suffix = ou=Computers

ldap ssl = off

ldap delete dn = Yes

add user script = /usr/sbin/smbldap-useradd -m "%u"

add machine script =

/usr/sbin/smbldap-useradd -d /dev/null -g 100 -s /bin/false -M %u

add group script = /usr/sbin/smbldap-groupadd -p "%g"

add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"

delete user script = /usr/sbin/smbldap-userdel "%u"

delete group script = /usr/sbin/smbldap-groupdel "%g"

delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"

set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'

 

idmap uid = 16777216-33554431

idmap gid = 16777216-33554431

template shell = /bin/false

winbind use default domain = no

 

################ Homes parameters ###############

[homes]

        comment = repertoire de %U, %u

        browseable = no

        writeable = yes

        read only = no

        force create mode = 0700

        create mode = 0700

        force directory mode = 0700

        directory mode = 700

 

############ Netlogone parameters #################

[netlogon]

        path = /home/netlogon

        browseable = No

        read only = yes

        write list = root

 

         2. 重新啟動 Samba

詳細操作 :

# service smb restart

 

Shutting down SMB services:                                     [FAILED]

Shutting down NMB services:                                     [FAILED]

Starting SMB services:             # 此處時間會稍長             [  OK  ]

Starting NMB services:                                           [  OK  ]

 

         3. 添加Samba DN管理密碼(注意密碼要和您openldapDN密碼要一致啊

詳細操作 :

# smbpasswd -w lawrence

 

Setting stored password for "cn=root,dc=openmyhand,dc=com" in secrets.tdb

 

         4. 建立目錄netlogon, (此處用作放載登陸腳本.)

詳細操作 :

# mkdir /home/netlogon

 

         5. 測試Samba , PDC配置是否正確,

詳細操作 :

# testparm

 

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[netlogon]"

Loaded services file OK.

Server role: ROLE_DOMAIN_PDC          # 注意這裡 ,已經成功設為PDC

Press enter to see a dump of your service definitions

 

         6. 查看SID , SID每台機都有所不同, 請記下來, 等會配置時,檢查是否一致, 配置中沒

           有的, 則把SID 補上

詳細操作 :

# net getlocalsid

SID for domain is: S-1-5-21-572433377-2950152015-2928006418

(每台機都有所不同)

 

         7. 執行configure.pl配置smbldap-tools

詳細操作 :

# /usr/share/doc/smbldap-tools-0.9.1/configure.pl

 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

       smbldap-tools script configuration

       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Before starting, check

 . if your samba controller is up and running.

 . if the domain SID is defined (you can get it with the 'net getlocalsid')

 . you can leave the configuration using the Crtl-c key combination

 . empty value can be set with the "." character

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Looking for configuration files...

Samba Configuration File Path [/etc/samba/smb.conf] >     Enter

The default directory in which the smbldap configuration files are stored is shown.

If you need to change this, enter the full directory path, then press enter to continue.

Smbldap-tools Configuration Directory Path [/etc/smbldap-tools/] >     Enter

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Let's start configuring the smbldap-tools scripts ...

 

. workgroup name: name of the domain Samba act as a PDC

  workgroup name [openmyhand.com] >     Enter

. netbios name: netbios name of the samba controler

  netbios name [PDC] >     Enter

. logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'

  logon drive [H:] >     Enter

. logon home: home directory location (for Win95/98 or NT Workstation).

  (use %U as username) Ex:'\\PDC\%U'

. logon home (press the "." character if you don't want homeDirectory) [\\%L\%u] >     Enter

. logon path: directory where roaming profiles are stored. Ex:'\\PDC\profiles\%U'    

  logon path (press the "." character if you don't want roaming profile) [\\PDC\profiles\%U] >  ( 輸入 . )

. home directory prefix (use %U as username) [/home/%U] >     Enter

. default users' homeDirectory mode [700] >     Enter

. default user netlogon script (use %U as username) [%U.bat] >     Enter

  default password validation time (time in days) [45] >   Enter  預設密碼有效期

. ldap suffix [dc=openmyhand,dc=com] >   Enter

. ldap group suffix [ou=Groups] >   Enter

. ldap user suffix [ou=Users] >     Enter

. ldap machine suffix [ou=Computers] >     Enter

. Idmap suffix [ou=Idmap] >     Enter

. sambaUnixIdPooldn: object where you want to store the next uidNumber

  and gidNumber available for new users and groups

  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=openmyhand.com] >     Enter

. ldap master server: IP adress or DNS name of the master (writable) ldap server

  ldap master server [127.0.0.1] >     Enter

. ldap master port [389] >     Enter

. ldap master bind dn [cn=root,dc=openmyhand,dc=com] >     Enter

. ldap master bind password [] > lawrenceSamba admin DN ldap管理密碼

. ldap slave server: IP adress or DNS name of the slave ldap server: can also be the master one

  ldap slave server [127.0.0.1] >   192.168.100.2  Enter     (BDCIP或功能變數名稱

. ldap slave port [389] >     Enter

. ldap slave bind dn [cn=root,dc=openmyhand,dc=com] >     Enter

. ldap slave bind password [] > lawrence Samba admin DN ldap管理密碼

. ldap tls support (1/0) [0] >     Enter

. SID for domain get.com: SID of the domain (can be obtained with 'net getlocalsid PDC')SID for domain openmyhand.com

[S-1-5-21-572433377-2950152015-2928006418] > 

(確定有沒有SID, 如果沒有,把安裝前查到的填上去)  Enter

. unix password encryption: encryption used for unix passwords

 unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] >     Enter

. default user gidNumber [513] >     Enter

. default computer gidNumber [515] >     Enter

. default login shell [/bin/bash] >     Enter

. default skeleton directory [/etc/skel] >     Enter

. default domain name to append to mail adress [] > openmyhand.com    Enter

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

backup old configuration files:

  /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old

  /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old

writing new configuration file:

  /etc/smbldap-tools/smbldap.conf done.

  /etc/smbldap-tools/smbldap_bind.conf done.

 

 

         8. 初始化LDAP資料庫

詳細操作 :

# smbldap-populate

 

Populating LDAP directory for domain openmyhand.com

(S-1-5-21-572433377-2950152015-2928006418)

(using builtin directory structure)

 

adding new entry: dc=openmyhand,dc=com

adding new entry: ou=Users,dc=openmyhand,dc=com

adding new entry: ou=Groups,dc=openmyhand,dc=com

adding new entry: ou=Computers,dc=openmyhand,dc=com

adding new entry: ou=Idmap,dc=openmyhand,dc=com

adding new entry: uid=root,ou=Users,dc=openmyhand,dc=com

adding new entry: uid=nobody,ou=Users,dc=openmyhand,dc=com

adding new entry: cn=Domain Admins,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Domain Users,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Domain Guests,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Domain Computers,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Administrators,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Account Operators,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Print Operators,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Backup Operators,ou=Groups,dc=openmyhand,dc=com

adding new entry: cn=Replicators,ou=Groups,dc=openmyhand,dc=com

adding new entry: sambaDomainName=openmyhand.com,dc=openmyhand,dc=com

 

Please provide a password for the domain root:

Changing password for root

New password : lawrence              Samba admin DN ldap管理密碼

Retype new password : lawrence       Samba admin DN ldap管理密碼

 

 

          已經安裝完成

 

         9. 設定電腦啟動就啟動ldap , smb , httpd, named 服務

詳細操作 :

# chkconfig ldap on

# chkconfig smb on

# chkconfig httpd on

# chkconfig named on

 

        10. 重新啟動電腦

 

詳細操作 :

# reboot

 

 

Setp 7PDC 基本的管理知識

 

主要管理指令 :

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# smbldap-useradd -a -m user1              (添加用戶帳號, user1

# smbldap-groupadd -p group1               (添加帳號, group1

# smbldap-useradd -w winxp$                (添加一個域電腦帳號,  winxp為電腦名)

# smbldap-groupmod -m user1 group1     ( 把用戶user1 加入 group1 )

# smbldap-userdel user1                         ( 刪除帳號, user1 )

# smbldap-groupdel group1                      ( 刪除, group1 )

# smbldap-userdel  winxp$                      刪除電腦帳號,  winxp為電腦名)

# smbldap-groupmod -x user1 group1      ( 把用戶 user1 group1 中刪除 )

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

主要配置檔位置 :

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/etc/samba/smb.conf

/etc/smbldap-tools/smbldap.conf

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

登陸腳本的編寫:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

使用vi /home/netlogon/下建立user1.tmp檔,完整內容如下:

(user1帳號為例)

 

詳細內容:

net use H:  \\PDC\public 設定public目錄為H

 

tmp檔轉換成bat檔(因作業系統檔格式的不同,所以要進行一些特殊的轉換工作):

 

詳細內容:

# cat -A user2.tmp | tr ‘$’ ‘\r’ > user1.bat

 

這樣就寫好了user1的登陸腳本, user1Windows 登陸時就會自動執行該腳本.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Setp 8測試PDC是否配置正確

 

         1. 添加一個測試用戶帳號

詳細操作 :

# smbldap-useradd -a -m user1

# smbldap-passwd user1

 

Changing password for user1

New password : 123456

Retype new password : 123456

 

         2. 測試user1 登入PDC Server

詳細操作 :

# smbclient -L localhost -U user1

Password: 123456

 

Domain=[OPENMYHAND.COM] OS=[Unix] Server=[Samba 3.0.10-1.4E.6]

        Sharename     Type      Comment

        ---------          ----       -------

        IPC$              IPC       IPC Service (Samba Server)

        ADMIN$         IPC       IPC Service (Samba Server)

        user1              Disk       repertoire de user1, user1

Domain=[OPENMYHAND.COM] OS=[Unix] Server=[Samba 3.0.10-1.4E.6]

        Server               Comment

        ---------               -------

        PDC                Samba Server

        Workgroup           Master

        ---------               -------

        OPENMYHAND.COM  PDC

 

 

最後更新 ( 2007/01/05, Friday )
 
< 前一個   下一個 >