คัดลอกการอนุญาตด้านความปลอดภัยของไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง


19

ฉันต้องการทำซ้ำการอนุญาตของไฟล์ไปยังไฟล์อื่น ฉันไม่ต้องการคัดลอกข้อมูลสิทธิ์เท่านั้น

ตัวอย่างเช่นฉันสร้างไฟล์ใหม่และต้องการให้มีสิทธิ์เหมือนกับไฟล์อื่นที่มีอยู่แล้ว


สิทธิ์เหมือนกับไฟล์อื่น แต่แตกต่างจากไดเรกทอรีที่มีอยู่หรือไม่
PsychoData

คำตอบ:


28

คุณสามารถทำได้ในไม่กี่ขั้นตอนด้วยicaclsและโปรแกรมแก้ไขข้อความ

ก่อนอื่นคุณต้องบันทึกการอนุญาตของไฟล์ต้นฉบับ

icacls C:\test\file1.bin /save perms.txt

คุณจะต้องแก้ไขperms.txtไฟล์ที่คุณเพิ่งสร้างในโฟลเดอร์ที่คุณใช้icaclsงานไฟล์ควรมีลักษณะดังนี้:

file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)

คุณสามารถข้ามสิ่งทั้งหมดในแถวที่ 2 สิ่งที่เราสนใจคือแถวแรก เปลี่ยนเป็นfile1.binชื่อไฟล์ใหม่ของคุณfile2.binและบันทึกไฟล์

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

icacls C:\test\ /restore perms.txt

อาจจะใส่สิ่งเหล่านี้ลงในสคริปต์เพื่อทำให้งานเป็นไปโดยอัตโนมัติบ้าง
PsychoData

2
มันสามารถทำได้ แต่ฉันไม่สามารถคิดออกจากด้านบนของหัวของฉันวิธีการทำขั้นตอนที่ 2 ได้อย่างง่ายดาย อย่างไรก็ตามถ้าฉันจะเขียนสคริปต์ฉันจะทำทุกอย่างใน Powershell โดยใช้File.GetAccessControl()และFile.SetAccessControl()
Scott Chamberlain

4

ในการทำให้เป็นชุด (คัดลอกข้อความเตือนความปลอดภัยจากโฟลเดอร์ย่อยหรือโฟลเดอร์ทั้งหมดของไดรฟ์หนึ่งไปยังโฟลเดอร์ / ไฟล์เดียวกันบนไดรฟ์อื่น) สร้าง a พูดcpdacls.batไฟล์ด้วยเนื้อหานี้:

@echo off
for /r %1 %%f in (.) do call :icacls_one %%f %2

goto :eof

:icacls_one

icacls %1\*.* /save %TEMP%\perms.txt
icacls %2.%~pnx1 /restore %TEMP%\perms.txt
del /q %TEMP%\perms.txt

แล้วเรียกใช้เหมือนcpdacls.bat e:\ f:\กัน

โปรดทราบว่าโครงสร้างโฟลเดอร์ในโฟลเดอร์ปลายทางจะต้องเหมือนกับโครงสร้างโฟลเดอร์ในโฟลเดอร์ต้นทางที่นำมาจากรูทของมันไม่ขึ้นอยู่กับโฟลเดอร์ย่อยที่คุณระบุเป็นโฟลเดอร์ต้นทาง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.