บทความนี้จะอธิบายการคอนฟิก Samba เพื่อซ่อนไฟล์ (hide) เพื่อไม่ให้ผู้ใช้งานมองเห็นได้โดยดีฟอลต์ และการคอนฟิกเพื่อป้องกัน (veto) ไม่ให้ผู้ใช้สามารถเรียกใช้ไฟล์ที่มีชื่อที่กำหนดไว้ได้ ซึ่งสามารถนำไปประยุกต์ใช้ได้หลายกรณี เช่น ป้องกันไม่ให้ผู้ใช้เก็บไฟล์ที่ไม่ใช่ไฟล์งานเช่น “.mp3” ไว้บนเซิร์ฟเวอร์ผ่านการแชร์ไฟล์ได้
ตัวอย่างในบทความนี้ทดสอบบน Fedora 10 และติดตั้ง Samba เวอร์ชั่น 3.2.4
สร้างแชร์สำหรับทดสอบ
จากดีฟอลต์คอนฟิกของ Samba ที่ติดตั้งมา เพิ่มแชร์สำหรับการทดสอบในไฟล์ /etc/samba/smb.conf ในที่นี้จะตั้งชื่อว่า [test-share] ระบุ path เป็น /export อนุญาตให้เขียนได้ (writable)
[test-share] path = /export writable = yes public = yes
ใช้ root เพื่อสร้างไฟล์และไดเร็คทอรี ในส่วนแชร์ เพื่อทดสอบ
[root@file-server ~]# mkdir /export [root@file-server ~]# cd /export
[root@file-server export]# mkdir .dir-test1 [root@file-server export]# mkdir .dir-test2 [root@file-server export]# mkdir dir-test3 [root@file-server export]# mkdir dir-test4 [root@file-server export]# touch .file-test1.ext1 [root@file-server export]# touch .file-test2.ext2 [root@file-server export]# touch file-test3.ext3 [root@file-server export]# touch file-test4.ext4
[root@file-server export]# ls -al total 8 drwxrwxrwx 6 root root 4096 2009-04-03 15:06 . drwxr-xr-x 22 root root 4096 2009-04-03 14:14 .. drwxr-xr-x 2 root root 6 2009-04-03 15:05 .dir-test1 drwxr-xr-x 2 root root 6 2009-04-03 15:05 .dir-test2 drwxr-xr-x 2 root root 6 2009-04-03 15:05 dir-test3 drwxr-xr-x 2 root root 6 2009-04-03 15:05 dir-test4 -rw-r--r-- 1 root root 0 2009-04-03 15:05 .file-test1.ext1 -rw-r--r-- 1 root root 0 2009-04-03 15:05 .file-test2.ext2 -rw-r--r-- 1 root root 0 2009-04-03 15:06 file-test3.ext3 -rw-r--r-- 1 root root 0 2009-04-03 15:06 file-test4.ext4
รอสักครู่หรือ รีสตาร์ต Samba เพื่อให้มีผลทันที
[root@file-server samba]# /etc/init.d/smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ]
ทดลองเปิดแชร์ไฟล์จาก Windows XP
ยกเลิกการซ่อนไฟล์ที่ขึ้นต้นด้วยจุด
ดีฟอลต์คอนฟิกของ Samba จะถือว่าไฟล์หรือไดเร็คทอรีบนเซิร์ฟเวอร์ ที่ขึ้นต้นด้วยเครื่องหมายจุด “.” เป็นไฟล์ “hidden” เมื่อมองผ่านแชร์ไฟล์จาก Windows
หมายเหตุ ไฟล์หรือไดเร็คทอรี ที่ขึ้นต้นด้วยเครื่องหมายจุด “.” ส่วนใหญ่จะเป็นคอนฟิกหรือ profile สำหรับโปรแกรมที่รันอยู่บน Linux/UNIX
เปลี่ยนคอนฟิกของ Windows XP เพื่อให้แสดงไฟล์ที่ซ่อนไว้ โดยคลิกที่ Tools -> Folder Options แล้วกดที่แทป View ภายใต้ “Hidden files and folders” เลือกเป็น “Show hidden files and folders”
หลังจากแก้ไขคอนฟิก Folder Options จะเห็นไฟล์หรือไดเร็คทอรีที่ขึ้นต้นด้วยจุด “.” เพิ่มขึ้นมา แต่เป็นสีจางๆ
ถ้าเราต้องการแก้ไขการถูกมองเป็น “hidden” สามารถทำได้โดยเพิ่มคอนฟิกภายใต้ share ที่ต้องการ
[test-share]
path = /export
writable = yes
public = yes
hide dot files = no
รอสักครู่หรือ รีสตาร์ต Samba เพื่อให้มีผลทันที
[root@file-server samba]# /etc/init.d/smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ]
ทดลองดูผ่านแชร์ไฟล์บน Windows XP อีกครั้ง จะเห็นว่า ไฟล์หรือไดเร็คทอรี ที่ขึ้นต้นด้วยเครื่องหมายจุด “.” กลับมาเป็นสีปกติเหมือนไฟล์ทั่วไป และ ถึงแม้เราจะเปลี่ยน “Folder Options” กลับไปเป็น “Do not show hidden files and folders” อีกครั้ง ไฟล์เหล่านี้ก็ยังสามารถมองเห็นได้ตามปกติ
การซ่อนไฟล์ตามชื่อไฟล์
เราสามารถคอนฟิกเพื่อให้ Samba ซ่อนไฟล์ “hidden” ตามชื่อไฟล์ได้ เช่นต้องการซ่อนชื่อไฟล์หรือไดเร็คทอรีที่ในชื่อไฟล์มีคำว่า “test3”
[test-share]
path = /export
writable = yes
public = yes
hide dot files = no
hide files = /*test3*/
รอสักครู่หรือ รีสตาร์ต Samba เพื่อให้มีผลทันที
[root@file-server samba]# /etc/init.d/smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ]
ทดลองดูผ่านแชร์ไฟล์บน Windows XP หลังจากแก้ไขคอนฟิก จะเห็นว่าไฟล์ที่มีคำว่า “test3” กลายเป็นสีจางๆ ไปแล้ว
การป้องกัน (veto) การแชร์ไฟล์ตามชื่อที่กำหนด
การซ่อน (hide) เป็นเพียงไม่ให้ผู้ใช้งานเห็นไฟล์จาก Windows ได้โดยดีฟอลต์เท่านั้น ผู้ใช้งานสามารถเปลี่ยน Folder Options ทำให้มองเห็นไฟล์ที่ซ่อนได้ “Show hidden files and folders”
แต่ถ้าเราต้องการไม่ให้ผู้ใช้งานเรียกใช้ไฟล์บางไฟล์ผ่านทางการแชร์ไฟล์ได้ โดยระบุเป็นชื่อไฟล์ที่กำหนด สามารถทำได้โดยใช้คอนฟิก “veto files” เช่น ไม่ต้องการให้ผู้ใช้งานเห็นไฟล์ที่มีคำว่า “test4” สามารถคอนฟิกได้ดังนี้
[test-share]
path = /export
writable = yes
public = yes
hide dot files = no
hide files = /*test3*/
veto files = /*test4*/
รอสักครู่หรือ รีสตาร์ต Samba เพื่อให้มีผลทันที
[root@file-server samba]# /etc/init.d/smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ]
ทดลองดูผ่านแชร์ไฟล์บน Windows XP หลังจากแก้ไขคอนฟิก ไฟล์ที่มีคำว่า “test4” จะหายไปแล้ว
ถึงแม้เราจะรู้ชื่อไฟล์ที่ถูก veto ไว้ แล้วระบุลงไปในช่อง Address เลย ก็ไม่สามารถดูแชร์ไฟล์ที่มีคำว่า “test4” ได้อีกเลย
การคอนฟิก veto ไฟล์ จะป้องกันทั้งการอ่านและเขียน หรือ download, upload ผ่านแชร์ไฟล์ ตัวอย่างเช่น ถ้าคอนฟิก veto ไฟล์ที่มีคำว่า “test4” ไว้ แล้วเราพยายามจะ upload ไฟล์ ชื่อ upload-test4.txt ผ่านแชร์ไฟล์ Samba จะไม่อนุญาต
ในกรณีที่ต้องการซ่อนหรือป้องการการใช้ไฟล์หลายๆ ชื่อ เช่นต้องการป้องกันการใช้ไฟล์ที่มีคำว่า “test4” หรือคำว่า “test1” สามารถคอนฟิกได้ดังนี้
veto files = /*test4*/*test1*/