หลังจาก ตั้ง Active Directory Domain Controller ด้วย Samba 4 บน Ubuntu 16.04 เรียบร้อยแล้ว อีกหนึ่งคุณสมบัติที่นิยมใช้กันภายในบริษัทคือ การเซ็ต Roaming User Profiles เพื่อให้ผู้ใช้งานสามารถล็อกอินจากเครื่อง Windows ไหนก็ได้ ที่เป็นสมาชิก AD Domain เดียวกัน แล้วจะได้หน้าจอ Desktop เหมือนกัน
หลักการทำงานคร่าวๆ คือ เมื่อผู้ใช้ที่มีการคอนฟิก Roaming User Profiles ไว้ ล็อกอิน หรือ Log on เข้าเครื่อง Windows ที่อยู่ใน AD Domain จะมีการดาวน์โหลด profiles ต่างๆ ของผู้ใช้ เช่นภาพ Desktop Background ไฟล์หรือโฟลเดอร์ที่อยู่บน Desktop มาจากแชร์โฟลเดอร์บนเซิร์ฟเวอร์ที่ถูกตั้งค่าไว้
และหลังจากที่ผู้ใช้งานเสร็จเรียบร้อย ทำการ Log off ออกจาก Windows ค่า profiles หรือไฟล์โฟลเดอร์ที่ถูกแก้ไข จะถูกอัพโหลดกลับเข้าไปแชร์โฟลเดอร์ที่เดิมที่ตั้งค่าไว้ด้วย
ลองมาดูวิธีการคอนฟิก Samba 4 ให้สามารถทำ Roaming User Profiles ได้
ในที่นี่เพื่อความง่าย จะคอนฟิกแชร์โฟลเดอร์สำหรับเก็บ Roaming User Profiles ไว้บนตัว Domain Controller เลย
เริ่มต้น สร้างไดเรคทอรีบนเครื่องเซิรฟ์เวอร์ที่จะใช้เก็บ Profiles ในที่นี่ขอเซ็ตตามเว็บไซต์ wiki.samba.org
admin@samba4:~$ sudo mkdir -p /srv/samba/Profiles admin@samba4:~$ sudo chmod 1770 /srv/samba/Profiles admin@samba4:~$ sudo chgrp users /srv/samba/Profiles
ลองใช้คำสั่ง ls -l ดูค่า permissions และชื่อ group ของไดเรคทอรีที่สร้าง
admin@samba4:~$ ls -l /srv/samba/
total 4
drwxrwx--T 2 root users 4096 Sep 23 17:17 Profiles
admin@samba4:~$ sudo ls -l /srv/samba/Profiles/
total 0
แก้ไขคอนฟิกไฟล์ smb.conf โดยเพิ่มคอนฟิกส่วนการแชร์โฟลเดอร์ [Profiles]
admin@samba4:~$ sudo vi /etc/samba/smb.conf ... [Profiles] path = /srv/samba/Profiles read only = no store dos attributes = Yes create mask = 0600 directory mask = 0700 profile acls = yes csc policy = disable
ใช้คำสั่ง smbcontrol รีโหลดโปรเซส samba เพื่อให้คอนฟิกที่แก้ไขมีผล
admin@samba4:~$ sudo smbcontrol all reload-config
ใช้คำสั่ง samba-tool user add สร้างชื่อผู้ใช้ chris โดยจะระบุออปชัน –profile-path เพื่อกำหนดค่าแชร์โฟลเดอร์ที่ใช้ในการเก็บ Profiles
admin@samba4:~$ sudo samba-tool user add chris --profile-path=\\\\192.168.56.16\\Profiles\\chris
New Password:
Retype Password:
User 'chris' created successfully
ทดลอง log on เข้าเครื่อง Windows ที่คอนฟิกอยู่ใน AD Domain อยู่แล้ว ด้วยชื่อผู้ใช้ที่เพิ่งสร้าง
เริ่มต้น เนื่องจากเป็นการล็อกออนครั้งแรก ผู้ใช้งานยังไม่มีค่า Profiles ใดๆ เลย จะได้หน้าจอดีฟอลต์ของ Windows
หลังจาก Log on เรียบร้อยแล้ว ลองดูไฟล์ในไดเรคทอรีที่คอนฟิกไว้เป็นแชร์โฟลเดอร์ในการเก็บ Profiles จะมีไดเรคทอรี chris.V2 ถูกสร้างขึ้นมา โดยดีฟอลต์ในไดเรคทอรีนี้ยังไม่มีไฟล์ใดๆ ทั้งสิ้น
admin@samba4:~$ sudo ls -l /srv/samba/Profiles/ total 8 drwxrwx---+ 2 3000021 users 4096 Sep 23 17:23 chris.V2 admin@samba4:~$ sudo ls -l /srv/samba/Profiles/chris.V2 total 0
คำอธิบายคือ เมื่อผู้ใช้ Log on เข้า Windows ที่อยู่ใน AD Domain ครั้งแรก จะมีการพยายามดาวน์โหลด Profiles จากแชร์โฟลเดอร์ที่ตั้งไว้ แต่ดีฟอลต์เนื่องจากเรายังไม่ได้เซ็ตค่าอะไร ทำให้ผู้ใช้งานนี้จะได้หน้าจอ Windows ในรูปแบบดีฟอลต์
ทดสองสร้างโฟลเดอร์หรือไฟล์ไว้บน Desktop หรือเปลี่ยนภาพ Desktop Background
แล้วกด Log off ออกจาก Windows
ระหว่างการ Log off ค่า Profiles ต่างๆ ของผู้ใช้งาน จะถูกอัพโหลดกลับเข้าไปในแชร์โฟลเดอร์บนเซิร์ฟเวอร์
หลังจาก Log off เสร็จเรียบร้อยแล้ว ในไดเรคทอรีที่เก็บ Profiles ของผู้ใช้ จะมีไฟล์ต่างๆ ถูกสร้างขึ้นมาจากการอัพโหลด
admin@samba4:~$ sudo ls -l /srv/samba/Profiles/chris.V2 total 620 drwxrwx---+ 3 3000021 users 4096 Sep 23 17:24 AppData drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Contacts drwxrwx---+ 3 3000021 users 4096 Sep 23 17:29 Desktop drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Documents drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Downloads drwxrwx---+ 7 3000021 users 4096 Sep 23 17:25 Favorites drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Links drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Music -rwxrwx---+ 1 3000021 users 524288 Sep 23 17:32 NTUSER.DAT -rwxrwx---+ 1 3000021 users 250 Sep 23 17:34 ntuser.ini drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Pictures drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Saved Games drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Searches drwxrwx---+ 2 3000021 users 4096 Sep 23 17:24 Videos
ตัวอย่างไฟล์ในไดเรคทอรีย่อย Desktop จะเหมือนกับไฟล์บน Desktop บน Windows
admin@samba4:~$ sudo ls -l /srv/samba/Profiles/chris.V2/Desktop total 16 -rwxrwx---+ 1 3000021 users 282 Sep 23 17:24 desktop.ini drwxrwx---+ 2 3000021 users 4096 Sep 23 17:29 test-folder admin@samba4:~$ sudo ls -l /srv/samba/Profiles/chris.V2/Desktop/test-folder total 8 -rwxrwx---+ 1 3000021 users 11 Sep 23 17:31 file1.txt admin@samba4:~$ sudo cat /srv/samba/Profiles/chris.V2/Desktop/test-folder/file1.txt Test Samba 4 Active Directory Domain Controller Roaming Profiles
ลองใช้อีกเครื่องหนึ่ง join AD เข้ามาในโดเมนเดียวกัน แล้วล็อกอินด้วยชื่อผู้ใช้ chris ก็จะได้หน้าจอ Desktop เหมือนกัน
ลองคอนฟิกกันดูครับ
กรณีทำเช่นนี้แล้ว ถ้า user ดาวน์โหลดไฟล์ต่างๆ เช่น ไฟล์หนังขนาดใหญ่มา จากนั้นไปลอกอินเครื่องอื่น เครื่องๆนั้นจะมีไฟล์หนังขนาดใหญ่นั้นด้วยไหมครับ ถ้าเป็นไปตามนั้นจริงๆ แปลว่า hd ของเครื่อง local นั้นๆไม่ได้ถูกใช้เลย แสดงว่าไฟล์หนังนั้นถูกเก็บไว้ที่ server เช่นนีแล้วจะเป็นภาระต่อ server มากเลยใช่ไหมครับ หรือผมเข้าใจอะไรผิดไป