คำตอบสั้น ๆ: เข้าใจความต่างระหว่างสิทธิ์ Share กับ NTFS ที่ทำให้คนตั้งผิดบ่อยที่สุด แล้ววางโครงสร้างโฟลเดอร์ส่วนกลางขององค์กรให้ถูกหลัก
คู่มือนี้อธิบาย File Server ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
เรื่องที่ทำให้ผู้ดูแล Windows สับสนมากที่สุดคือสิทธิ์สองชุดที่ซ้อนกันอยู่ สิทธิ์ Share ซึ่งมีผลเมื่อเข้าผ่านเครือข่าย และสิทธิ์ NTFS ซึ่งมีผลเสมอไม่ว่าเข้าทางไหน เมื่อทั้งสองชั้นไม่ตรงกัน ผลลัพธ์คือสิทธิ์ที่แคบกว่าชนะเสมอ
คู่มือนี้วางโครงสร้างโฟลเดอร์ส่วนกลางขององค์กรตามแนวทางที่ใช้กันจริง คือเปิดสิทธิ์ Share ให้กว้างแล้วควบคุมทั้งหมดที่ชั้น NTFS ซึ่งจัดการง่ายกว่าและตรวจสอบได้ชัดเจนกว่า
สิ่งที่ต้องเตรียม (File Server)
- Windows Server ที่อยู่ในโดเมน
- กลุ่มผู้ใช้ใน Active Directory ที่แบ่งตามแผนกแล้ว
- ดิสก์แยกสำหรับเก็บข้อมูล ไม่ควรใช้ไดรฟ์ C
ขั้นตอนที่ 1: ติดตั้ง Role (File Server)
Install-WindowsFeature -Name FS-FileServer, FS-Resource-Manager -IncludeManagementTools
Get-WindowsFeature -Name FS-* | Where-Object Installed
ขั้นตอนที่ 2: วางโครงสร้างโฟลเดอร์ (File Server)
New-Item -Path "D:\Shares\Company" -ItemType Directory
New-Item -Path "D:\Shares\Company\Public" -ItemType Directory
New-Item -Path "D:\Shares\Company\Finance" -ItemType Directory
New-Item -Path "D:\Shares\Company\HR" -ItemType Directory
New-Item -Path "D:\Shares\Company\IT" -ItemType Directory
หลักการที่ควรยึด แชร์ที่ระดับบนสุดเพียงจุดเดียว แล้วควบคุมสิทธิ์ของแต่ละโฟลเดอร์ย่อยด้วย NTFS การสร้างแชร์แยกทุกแผนกทำให้ผู้ใช้ต้องจำหลายที่อยู่และดูแลยากขึ้น
ขั้นตอนที่ 3: สร้าง Share และตั้งสิทธิ์ Share ให้กว้าง
New-SmbShare -Name "Company" -Path "D:\Shares\Company" `
-FullAccess "CORP\Domain Admins" `
-ChangeAccess "CORP\Domain Users" `
-FolderEnumerationMode AccessBased
Get-SmbShare -Name "Company" | Format-List
Get-SmbShareAccess -Name "Company"
-FolderEnumerationMode AccessBased คือ Access-Based Enumeration ซึ่งทำให้ผู้ใช้เห็นเฉพาะโฟลเดอร์ที่ตัวเองมีสิทธิ์เข้า แผนกอื่นจะไม่เห็นแม้แต่ชื่อโฟลเดอร์ของแผนกการเงิน ควรเปิดเสมอ
ขั้นตอนที่ 4: ตั้งสิทธิ์ NTFS ซึ่งเป็นตัวควบคุมจริง
เริ่มจากตัดการสืบทอดสิทธิ์และล้างสิทธิ์เดิมออกก่อน
icacls "D:\Shares\Company" /inheritance:d
icacls "D:\Shares\Company" /remove:g "BUILTIN\Users"
icacls "D:\Shares\Company" /remove:g "CREATOR OWNER"
# ให้ทุกคนเข้าถึงโฟลเดอร์บนสุดได้ แต่ไม่ให้ไล่ลงไปโดยอัตโนมัติ
icacls "D:\Shares\Company" /grant "CORP\Domain Users:(RX)"
icacls "D:\Shares\Company" /grant "CORP\Domain Admins:(OI)(CI)F"
ตั้งสิทธิ์รายแผนก
icacls "D:\Shares\Company\Finance" /inheritance:d
icacls "D:\Shares\Company\Finance" /remove:g "CORP\Domain Users"
icacls "D:\Shares\Company\Finance" /grant "CORP\Finance:(OI)(CI)M"
icacls "D:\Shares\Company\HR" /inheritance:d
icacls "D:\Shares\Company\HR" /remove:g "CORP\Domain Users"
icacls "D:\Shares\Company\HR" /grant "CORP\HR:(OI)(CI)M"
icacls "D:\Shares\Company\Public" /grant "CORP\Domain Users:(OI)(CI)M"
ความหมายของรหัส (OI) คือสืบทอดให้ไฟล์ (CI) คือสืบทอดให้โฟลเดอร์ย่อย M คือ Modify ซึ่งอ่านเขียนลบได้แต่เปลี่ยนสิทธิ์ไม่ได้ และ F คือ Full Control
อย่าให้ผู้ใช้ทั่วไปได้ F เพราะจะแก้สิทธิ์และเปลี่ยนเจ้าของไฟล์ได้ ซึ่งทำให้ระบบสิทธิ์พังโดยไม่มีใครรู้
ขั้นตอนที่ 5: ตรวจสิทธิ์ที่มีผลจริง
icacls "D:\Shares\Company\Finance"
Get-Acl "D:\Shares\Company\Finance" | Format-List
ตรวจสิทธิ์ที่ผู้ใช้คนหนึ่งได้รับจริงผ่านหน้าต่างคุณสมบัติของโฟลเดอร์ แท็บ Security ปุ่ม Advanced แล้วเลือก Effective Access ซึ่งจะรวมผลของทั้งสองชั้นและกลุ่มทั้งหมดที่ผู้ใช้สังกัดให้เห็นชัดเจน