ค้นหาเว็บไซต์

รับ-ACL และชุด-ACL


PowerShell เป็นเครื่องมือที่มีประสิทธิภาพมากในการเปลี่ยนแปลงสิทธิ์ NTFS จำนวนมาก

คำสั่งหลักสองคำสั่งที่ใช้คือ Get-ACL และ Set-ACL

ลองใช้ตัวอย่างในชีวิตจริงเพื่อดูว่ามันเสร็จสิ้นอย่างไร

รีเซ็ตการสืบทอดโฟลเดอร์และตั้งค่าสิทธิ์ NTFS

ในตัวอย่างต่อไปนี้ เราต้องการนำแนวทางปฏิบัติที่ดีที่สุดของ Microsoft ไปใช้โดยการย้ายจากสิทธิ์ที่ได้รับมอบหมายเป็นรายบุคคลไปเป็นสิทธิ์ที่ได้รับมอบหมายจากกลุ่ม

พิจารณาโฟลเดอร์ Mars_Data ที่ผู้ใช้สามคนได้รับการควบคุมเต็มรูปแบบ:

อันดับแรก เราไม่ต้องการให้ผู้ใช้ได้รับการกำหนดสิทธิ์โดยตรง เนื่องจากหมายความว่าเราจะต้องไปที่คุณสมบัติโฟลเดอร์เพื่อเปลี่ยนแปลง

แนวทางปฏิบัติที่ดีที่สุดของ Microsoft คือการใช้กลุ่มภายในของโดเมนสำหรับการกำหนดสิทธิ์ ดังนั้นเราจึงสร้างกลุ่ม “DL.Mars_Data.Modify”

ด้วยการใช้กลุ่มท้องถิ่นของโดเมน เราสามารถให้หรือลบการเข้าถึงข้อมูลจากส่วนกลางใน Active Directory ของเราได้ง่ายๆ โดยการแก้ไขความเป็นสมาชิกกลุ่ม

ประการที่สอง เราต้องการเปิดใช้งานการสืบทอดในโฟลเดอร์ Mars_Data เพื่อเผยแพร่การเข้าถึงระบบและผู้ดูแลระบบจากโฟลเดอร์ระดับบนสุดของเรา

เพื่อให้บรรลุเป้าหมายนี้ มีสามขั้นตอนที่ต้องครอบคลุมด้วยสคริปต์ PowerShell ของเรา:

  1. ขั้นแรก ให้ลบสิทธิ์ที่ชัดเจน (ไม่ได้รับสืบทอด) ที่มีอยู่ออกจากโฟลเดอร์
  2. เปิดใช้งานการสืบทอดบนโฟลเดอร์
  3. กำหนดสิทธิ์แก้ไขให้กับกลุ่มของเรา

เรามาดูกันว่ามันทำอย่างไร

ลบสิทธิ์ที่ไม่ได้รับสืบทอดโดยใช้ PowerShell

ในการแก้ไขการอนุญาตของโฟลเดอร์เราต้องคว้า ACL ที่มีอยู่ (รายการควบคุมการเข้าถึง) โดยใช้ Get-ACL:

$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath

จากนั้นเราจะวนซ้ำ ACE (รายการควบคุมการเข้าถึง) ใน ACL และลบ ACE ใดๆ ที่ไม่ได้รับการสืบทอด:

ForEach ($Ace In $Acl.Access) {
    If ($Ace.IsInherited -eq $false) {
        $Acl.RemoveAccessRuleSpecific($Ace)
    }
}

การเปลี่ยนแปลงของ ACL ดำเนินการจริงในหน่วยความจำ ดังนั้นเราจึงจำเป็นต้องส่ง ACL ที่เปลี่ยนแปลงไปยังโฟลเดอร์โดยใช้ Set-Acl หลังจากทำการเปลี่ยนแปลง:

Set-Acl -Path $FolderPath -ACLObject $Acl

เปิดใช้งานการสืบทอดสิทธิ์โดยใช้ PowerShell

หากต้องการเปิดใช้งานการสืบทอดสิทธิ์ NTFS เราใช้คำสั่งต่อไปนี้:

$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath
$Acl.SetAccessRuleProtection($false, $false)
Set-Acl -Path $FolderPath -ACLObject $Acl

เช่นเดียวกับในตัวอย่างก่อนหน้านี้ เราอ่าน ACL ด้วย Get-Acl แก้ไข ACL โดยเปิดใช้งานการสืบทอด จากนั้นเขียนการเปลี่ยนแปลงของเรากลับไปยังดิสก์ด้วย Set-Acl

เพิ่มสิทธิ์ NTFS โดยใช้ PowerShell

องค์ประกอบสุดท้ายของสคริปต์ของเราคือการกำหนดสิทธิ์ให้กับกลุ่มที่เราจะใช้ในการจัดการการเข้าถึงแทนการกำหนดสิทธิ์ให้กับผู้ใช้แต่ละราย

สามารถทำได้โดยใช้คำสั่ง PowerShell ต่อไปนี้:

$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath
$Ace = New-Object System.Security.AccessControl.FileSystemAccessRule("easy365manager\DL.Mars_Data.Modify", 'Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow')
$Acl.AddAccessRule($Ace)
Set-Acl -Path $FolderPath -ACLObject $Acl

ในการมอบหมายสิทธิ์ ก่อนอื่นเราต้องสร้าง ACE ที่สะท้อนถึงสิทธิ์ที่เราต้องการมอบหมาย

พารามิเตอร์ประกอบด้วยผู้รับมอบหมาย ประเภทสิทธิ์ แฟล็กการสืบทอด แฟล็กการเผยแพร่ และประเภท (อนุญาต/ปฏิเสธ)

อีกครั้ง เราอ่าน ACL ด้วย Get-Acl ก่อนทำการเปลี่ยนแปลง และเราเขียน ACL ด้วย Set-Acl

สคริปต์สุดท้าย

เพื่อล้างสคริปต์ของเรา เราได้รวมการเปลี่ยนแปลง ดังนั้นเราจึงต้องอ่านและเขียน ACL เพียงครั้งเดียว

นี่คือลักษณะของสคริปต์สุดท้าย:

$FolderPath = "c:\ms_tmp\Projects\P0001-P0050\Mars_Data"
$Acl = Get-Acl -Path $FolderPath
# Remove non-inherited permissions
ForEach ($Ace In $Acl.Access) {
    If ($Ace.IsInherited -eq $false) {
        $Acl.RemoveAccessRuleSpecific($Ace)
    }
}
# Enable inheritance
$Acl.SetAccessRuleProtection($false, $false)
# Assign Modify to new group
$Ace = New-Object System.Security.AccessControl.FileSystemAccessRule("easy365manager\DL.Mars_Data.Modify", 'Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow')
    $Acl.AddAccessRule($Ace)
Set-Acl -Path $FolderPath -ACLObject $Acl

หลังจากรันสคริปต์ การอนุญาตจะถูกตั้งค่าตามที่เราต้องการ:

การจัดการแบบรวมศูนย์จาก Active Directory

ขณะนี้เราได้รับการจัดการการอนุญาตไฟล์แบบรวมศูนย์จาก AD ของเราแล้ว

แทนที่จะต้องแก้ไขการอนุญาตโดยตรงจากแหล่งที่มา (โฟลเดอร์/ระบบไฟล์) ตอนนี้เราสามารถพึ่งพาการแก้ไขการเป็นสมาชิกกลุ่มใน AD ได้แล้ว มีประโยชน์มาก!

แต่คุณรู้หรือไม่ว่าคุณสามารถรวมการจัดการ Office 365 ไว้ใน Active Directory ได้ด้วย

ด้วยเครื่องมือการดูแลระบบ Office 365 ที่ปฏิวัติวงการอย่าง Easy365Manager คุณสามารถจัดการใบอนุญาตและกล่องจดหมาย Office 365 ได้โดยตรงจากคุณสมบัติผู้ใช้ AD:

บริษัทหลายร้อยแห่งใช้ Easy365Manager ในทุกธุรกิจทั่วโลกเนื่องจากข้อเท็จจริงดังต่อไปนี้:

  • ประหยัดเวลาได้มากในการทำงานจาก AD โดยไม่ต้องใช้คอนโซลเว็บ Office 365 จำนวนมาก
  • ติดตั้ง Easy365Manager ง่ายมาก (น้อยกว่าหนึ่งนาที)
  • Easy365Manager นำเสนอ GUI สำหรับงานจำนวนมาก ซึ่งโดยปกติจะมีให้ใช้งานผ่าน PowerShell เท่านั้น
  • ไม่มีการเปลี่ยนแปลงโครงสร้างพื้นฐานของคุณ (ความเสี่ยงเป็นศูนย์)
  • สุดท้าย Easy365Manager ช่วยให้คุณสามารถลบ Exchange ภายในองค์กรได้ (ประหยัดต้นทุนได้มาก)

คุณสามารถดาวน์โหลดรุ่นทดลองใช้งานเต็มรูปแบบ 30 วันได้ที่นี่

บทความที่เกี่ยวข้อง