คุณสามารถใช้เครื่องมือที่สร้างมาด้วย iCACLS เพื่อจัดการสิทธิ์ NTFS บน Windows เครื่องมือบรรทัดคำสั่ง icacls.exe ช่วยให้คุณดูหรือเปลี่ยน Access Control Lists (ACLs) สำหรับไฟล์และโฟลเดอร์บนระบบไฟล์ NTFS ในบทความนี้ เราจะดูคำสั่งที่มีประโยชน์สำหรับการจัดการสิทธิ์ NTFS บน Windows ด้วย iCACLS
ใช้ iCACLS เพื่อดูและตั้งค่าสิทธิ์ไฟล์และโฟลเดอร์
สิทธิ์การเข้าถึงปัจจุบันของวัตถุใดๆ บนโวล्यุม NTFS สามารถแสดงได้ดังนี้:
icacls 'C:\Share\Veteran\'
คำสั่งจะคืนรายการผู้ใช้และกลุ่มที่ได้รับมอบสิทธิ์การเข้าถึง สิทธิ์จะระบุโดยใช้ตัวย่อ:
- F – เข้าถึงเต็มที่ (Full access)
- M – เข้าถึงแก้ไข (Modify access)
- RX – อ่านและรัน (Read and execute access)
- R – อ่านอย่างเดียว (Read-only access)
- W – เขียนอย่างเดียว (Write-only access)
- D – ลบ (Delete)
สิทธิ์การสืบทอดจะระบุก่อนสิทธิ์การเข้าถึง (สิทธิ์การสืบทอดใช้กับโฟลเดอร์เท่านั้น):
- (OI) – Object Inherit
- (CI) – Container Inherit
- (IO) – Inherit Only
- (I) – สืบทอดสิทธิ์จากคอนเทนเนอร์พาเรนต์
ตัวอย่างคำสั่งทั่วไป
ให้สิทธิ์กลุ่ม "resource\mun-fs01_Auditors" อ่านและรัน (RX) บนโฟลเดอร์:
icacls 'C:\Share\Veteran\' /grant resource\mun-fs01_Auditors:RX
ลบกลุ่มออกจาก ACL ของไดเรกทอรี:
icacls 'C:\Share\Veteran\' /remove resource\mun-fs01_Auditors
เปิดใช้งานการสืบทอดสิทธิ์ NTFS จากโฟลเดอร์พาเรนต์:
icacls 'C:\Share\Veteran\' /inheritance:e
ปิดใช้งานการสืบทอดพร้อมลบ ACE ที่สืบทอดทั้งหมด:
icacls 'C:\Share\Veteran\' /inheritance:r
เปลี่ยนเจ้าของไฟล์หรือโฟลเดอร์:
icacls 'C:\Share\Veteran\' /setowner resource\j.smith /T /C /L /Q
วิธีสำรอง (ส่งออก) สิทธิ์ NTFS ของโฟลเดอร์
ก่อนทำการเปลี่ยนแปลงสิทธิ์อย่างมีนัยสำคัญ (ย้าย, อัปเดต ACLs, ย้ายทรัพยากร) บนโฟลเดอร์ NTFS (หรือโฟลเดอร์เครือข่ายที่แชร์) ควรสำรองสิทธิ์เก่าไว้ สำเนานี้จะช่วยให้คุณกลับสู่การตั้งค่าเดิม หรืออย่างน้อยก็ชี้แจงสิทธิ์เก่าสำหรับไฟล์/ไดเรกทอรีเฉพาะ
คุณสามารถใช้ icacls.exe เพื่อส่งออก/นำเข้าสิทธิ์ NTFS ของไดเรกทอรีปัจจุบัน ในการดึง ACL ทั้งหมดสำหรับโฟลเดอร์เฉพาะ (รวมถึงซับไดเรกทอรีและไฟล์) และส่งออกไปยังไฟล์ข้อความ ให้รันคำสั่งต่อไปนี้:
icacls g:\veteran /save c:\backup\veteran_ntfs_perms.txt /t /c
ขึ้นอยู่กับจำนวนไฟล์และโฟลเดอร์ การส่งออกสิทธิ์อาจใช้เวลานานหลายชั่วโมง หลังจากคำสั่งทำงานเสร็จ สถิติจำนวนไฟล์ที่ประมวลผลสำเร็จหรือล้มเหลวจะแสดง
วิธีกู้คืนสิทธิ์ NTFS ด้วย iCACLS
คุณสามารถกู้คืนสิทธิ์ NTFS บนโฟลเดอร์โดยใช้ไฟล์ veteran_ntfs_perms.txt ที่สร้างไว้ก่อนหน้านี้ ในการตั้งค่าสิทธิ์ NTFS บนวัตถุในไดเรกทอรีตามค่าในไฟล์สำรอง ACL ให้รันคำสั่งนี้:
icacls g:\ /restore c:\backup\veteran_ntfs_perms.txt /t /c
สังเกตว่าไฟล์สำรอง ACL มีเส้นทางสัมพัทธ์ (relative paths) ไม่ใช่เส้นทางแบบเต็ม (absolute paths) หมายความว่าคุณสามารถกู้คืนสิทธิ์บนโฟลเดอร์ได้แม้หลังจากย้ายไปไดรฟ์/ไดเรกทอรีอื่น
การรีเซ็ตสิทธิ์ NTFS ให้เป็นค่าเริ่มต้น
คุณสามารถใช้เครื่องมือ icacls เพื่อรีเซ็ตสิทธิ์โฟลเดอร์ (รวมถึงไฟล์และซับไดเรกทอรีที่ซ้อนอยู่)
icacls C:\share\veteran /reset /T /Q /C
คำสั่งนี้จะเปิดใช้งานการสืบทอดสิทธิ์ NTFS สำหรับวัตถุที่ระบุ และจะลบ ACL อื่นๆ ทั้งหมด
การคัดลอกสิทธิ์ NTFS จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง
คุณสามารถใช้ไฟล์ข้อความที่มีการสำรอง ACL เพื่อคัดลอกสิทธิ์ NTFS จากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่ง
ขั้นแรก สำรองสิทธิ์ NTFS ของโฟลเดอร์ต้นทาง:
icacls 'C:\Share\Veteran' /save C:\PS\save_ntfs_perms.txt /c
จากนั้น ใช้ ACL ที่บันทึกไว้กับโฟลเดอร์ปลายทาง:
icacls D:\Share /restore C:\PS\save_ntfs_perms.txt /c
วิธีนี้จะทำงานหากโฟลเดอร์ต้นทางและปลายทางมีชื่อเหมือนกัน แต่ถ้าชื่อโฟลเดอร์ปลายทางต่างกัน? เช่น คุณต้องการคัดลอกสิทธิ์ NTFS ไปยังโฟลเดอร์ D:\PublicDOCS
วิธีง่ายที่สุดคือเปิดไฟล์ save_ntfs_perms.txt ใน Notepad และแก้ไขชื่อโฟลเดอร์ ใช้ฟังก์ชัน Replace เพื่อแทนที่ชื่อ Veteran ด้วย PublicDOCS
จากนั้นนำเข้าสิทธิ์ NTFS จากไฟล์และนำไปใช้กับโฟลเดอร์ปลายทาง:
icacls D:\ /restore C:\PS\save_ntfs_perms.txt /c
การคัดลอกสิทธิ์ NTFS จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งยังง่ายกว่านี้ด้วย PowerShell:
Get-Acl -Path 'C:\Share\Veteran' | Set-Acl -Path 'E:\PublicDOCS'