คอนฟิก Samba เป็น Domain Controller

จากบทความ ติดตั้ง smbldap-tools บน Fedora 9 นั้นเป็นการคอนฟิกให้ Samba ทำหน้าที่เป็น file sharing อย่างเดียว โดยผู้ใช้งานสามารถ map drive เข้ามาแล้ว authenticate จาก LDAP ได้

ในบทความนี้จะคอนฟิกเพิ่มเติมเพื่อให้ Samba ทำหน้าที่เป็น Domain Controller ของ Windows client ได้

แก้ไขไฟล์ /etc/samba/smb.conf

ต้องแก้ไขไฟล์ smb.conf เพิ่มเติมโดยในที่นี้จะแสดงคอนฟิกทั้งหมดของไฟล์นี้เลย เพื่อคอนฟิกให้ Samba ทำหน้าที่เป็น Domain Controller

[global]
 workgroup = SMBLDAP
 server string = Samba Server Version %v
 passdb backend = ldapsam:ldap://127.0.0.1/
 passwd program = /usr/sbin/smbldap-passwd -u "%u"
 passwd chat = "Changing *\nNew password*" %n\n "*Retype new password*" %n\n"
 unix password sync = Yes
 log file = /var/log/samba/log.%U
 max log size = 50
 time server = Yes
 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 add user script = /usr/sbin/smbldap-useradd -m "%u"
 delete user script = /usr/sbin/smbldap-userdel "%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 -t 0 -w "%u"
 logon script = logon.bat
 logon path = \\%L\profiles\%u
 logon drive = H:
 domain logons = Yes
 os level = 65
 preferred master = Yes
 domain master = Yes
 wins support = Yes
 ldap admin dn = uid=root,ou=People,dc=test-ldap,dc=com
 ldap group suffix = ou=Group
 ldap idmap suffix = ou=Idmap
 ldap machine suffix = ou=Computers
 ldap suffix = dc=test-ldap,dc=com
 ldap user suffix = ou=People
 cups options = raw
[homes]
 comment = Home Directories
 read only = No
 browseable = No
[profiles]
 path = /home/profiles
 read only = No
 guest ok = Yes
 browseable = No

คำแนะนำ รันคำสั่ง testparm ทุกครั้งเพื่อตรวจสอบความถูกต้องของคอนฟิกไฟล์ หลังการแก้ไขไฟล์ /etc/samba/smb.conf

สร้างไดเร็คทอรีสำหรับเก็บ profiles ของ user

เพื่อให้ user สามารถล็อกอินจาก Windows หลายๆ เครื่องแล้วมี profiles เหมือนกัน เช่น desktop ต้องสร้างไดเร็คทอรี่บนลีนุกซ์ที่รัน Samba สำหรับเก็บ profiles ของ user

ตัวอย่างการสร้างไดเร็คทอรี สำหรับเก็บ profiles ของ user

[root@fc9-min ~]# cd /home
[root@fc9-min home]# mkdir profiles
[root@fc9-min home]# chgrp "Domain Users" profiles
[root@fc9-min home]# chmod 770 profiles
[root@fc9-min home]# ls -ld profiles
drwxrwx--- 2 root Domain Users 4096 2008-10-19 00:27 profiles

รันเซอร์วิส Samba

เพื่อให้ Samba ทำหน้าที่เป็น Domain Controller ได้นั้น จำเป็นต้องรัน 2 เซอร์วิสคือ smb และ nmb ตามตัวอย่าง

[root@fc9-min ~]# service smb start
Starting SMB services:                                     [  OK  ]
[root@fc9-min ~]# service nmb start
Starting NMB services:                                     [  OK  ]

คอนฟิก Windows ให้ join Domain

ล็อกอินเป็น Administrator บนเครื่องไคลเอนต์ Windows ที่จะ join Domain คลิ้กขวาที่ My Computer แล้วเลือก Properties คลิ้กที่ Computer Name แล้วกดปุ่ม Change ใส่ชื่อ Domain ที่ต้องการ join ในที่นี้คือ SMBLDAP

หน้าจอ “Computer Name Changes” จะให้ใส่ User Name และ Password ที่จะใช้ join domain ให้ใส่ User Name เป็น root และใส่ password ตามที่ระบุใน rootpw

ถ้าถูกต้องจะมีหน้าจอขึ้นข้อความ “Welcome to the SMBLDAP domain.” กดปุ่ม Ok แล้วก็รีสตาร์ตเครื่อง

หลังจากบู๊ตเครื่องเสร็จ หน้าจอ Log On to Windows จะสามารถเลือก Log on to เป็น SMBLDAP ได้ ใส่ user ที่เพิ่มจากคำสั่ง smbldap-useradd ในตัวอย่างคือ user01

เมื่อล๊อกออก (Log Off) จาก user01 จะมีการเก็บ profiles ของ user เข้าไปในไดเร็คทอรี บนลีนุกซ์ที่ตั้งไว้ด้วย

ตัวอย่างไฟล์ profiles ที่ถูกสร้างขึ้น ของ user01

[root@fc9-min ~]# ls -l /home/profiles/user01/
total 568
drwx--x--x+ 4 user01 Domain Users   4096 2008-10-18 17:48 Application Data
drwx--x--x+ 2 user01 Domain Users   4096 2008-05-03 16:20 Cookies
drwx------+ 2 user01 Domain Users   4096 2008-05-03 23:12 Desktop
drwx--x--x+ 3 user01 Domain Users   4096 2008-10-18 17:49 Favorites
drwx--x--x+ 4 user01 Domain Users   4096 2008-10-18 17:49 My Documents
drwx--x--x+ 2 user01 Domain Users   4096 2008-05-03 23:12 NetHood
-rwx------  1 user01 Domain Users 524288 2008-10-18 17:54 NTUSER.DAT
-rwx------  1 user01 Domain Users   1024 2008-10-18 17:54 NTUSER.DAT.LOG
-rw-------  1 user01 Domain Users    268 2008-10-19 00:55 ntuser.ini
drwx--x--x+ 2 user01 Domain Users   4096 2008-05-03 23:12 PrintHood
drwx--x--x+ 2 user01 Domain Users   4096 2008-10-18 17:49 Recent
drwx--x--x+ 2 user01 Domain Users   4096 2008-10-18 17:48 SendTo
drwx--x--x+ 3 user01 Domain Users   4096 2008-05-03 23:12 Start Menu
drwx--x--x+ 2 user01 Domain Users   4096 2008-05-03 16:17 Templates

ข้อมูลอ้างอิง

2 thoughts on “คอนฟิก Samba เป็น Domain Controller”

  1. ตอนนี้ผมกำลังทดสอบใช้งาน Linux มาสมมุติเป็น PDC ให้บริษัทย่อยๆอยู่ครับ
    ได้ลองทำตามบทความในเวปนี้ประมาณนี้ครับ
    1. Samba as Domain Controller
    2. ใช้ ldap authentication โดย smbldap-tools
    จากนั้นลอง ใช้ XP Join Domain บทความเขียนดีครับเข้าใจง่ายดี ปรับนิดหน่อยก็เอาไปใช้จริงได้แล้วครับ ขอบคุณมากครับ

    ไม่ทราบว่ามีบทความเกี่ยวกับ VPN ที่สามารถ authen ผ่าน samba แล้วสามารถ เข้ามาใช้ไฟล์กลาง คล้ายๆกับ join domain เข้ามาหรือไม่ครับ
    ตอนนี้ทดลองใช้ poptop pptpd ลองทำ VPN อยู่ครับ แต่ยังติดปัญหาไม่รู้ว่ามันแปลกหรือป่าว

    แบบที่ไม่สำเร็จ
    Samba PDC + poptop vpn server
    authen ด้วย plugin winbind.so ntlm_auth ใช้ domain samba ทั้งที่ใช้ ldap และแบบ smbpasswd
    account ของ samba ซึ่งทดสอบ join domain ด้วย client xp work แล้ว แต่ลอง vpn ไม่ได้

    แบบนี้ใช้ได้
    Windows AD <= Samba Join AD <= poptop vpn server
    authen ด้วย plugin winbind.so ntlm_auth ใช้ domain window account windows vpn ได้

    อ่านเวปนอก ก็เหมือนจะใช้ join windows AD กันซะส่วนมาก ไม่ทราบมีอ่ะไรพอจะแนะนำได้บ้างครับ
    ขอบคุณล่วงหน้าครับ

  2. มันมี error คับไม่ทราบว่าแก้ยังไง

    The domain name sss might be a NetBIOS domain name. If this is the case, verify that the domain name is properly registered with WINS.

    If you are certain that the name is not a NetBIOS domain name, then the following information can help you troubleshoot your DNS configuration.

    The following error occurred when DNS was queried for the service location (SRV) resource record used to locate a domain controller for domain sss:

    The error was: “DNS name does not exist.”
    (error code 0x0000232B RCODE_NAME_ERROR)

    The query was for the SRV record for _ldap._tcp.dc._msdcs.sss

    Common causes of this error include the following:

    – The DNS SRV record is not registered in DNS.

    – One or more of the following zones do not include delegation to its child zone:

    sss
    . (the root zone)

Leave a Reply

Your email address will not be published.