Sao chép quyền bảo mật của tệp này sang tệp khác


19

Tôi muốn sao chép các quyền của một tập tin khác. Tôi không muốn sao chép dữ liệu, chỉ có quyền.

Ví dụ, tôi đã tạo một tệp mới và muốn nó có cùng quyền với một tệp khác đã tồn tại.


Quyền tương tự như một tệp khác, nhưng khác với thư mục họ đang ở?
PsychoData

Câu trả lời:


28

Bạn có thể làm điều đó trong một vài bước với icacls và trình soạn thảo văn bản.

Trước tiên, bạn phải lưu quyền của tệp gốc

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

bạn sẽ cần chỉnh sửa perms.txttệp bạn vừa tạo trong bất kỳ thư mục nào bạn đã chạy icacls. Tệp sẽ trông giống như thế này:

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

Bạn có thể bỏ qua tất cả những thứ trên hàng thứ 2, tất cả những gì chúng tôi quan tâm là hàng đầu tiên. Thay đổi file1.bintên tệp mới của bạn file2.binvà lưu tệp.

Bây giờ bạn chỉ cần khôi phục quyền truy cập tệp trên tệp thứ 2, lưu ý rằng lần này chúng tôi không bao gồm tên tệp. (Nếu bạn gặp lỗi thông báo " Không phải tất cả các đặc quyền hoặc nhóm được tham chiếu đều được gán cho người gọi. " Chạy lại chương trình trong dấu nhắc lệnh nâng cao.)

icacls C:\test\ /restore perms.txt

có thể đặt những thứ này vào một kịch bản để phần nào tự động hóa nhiệm vụ?
PsychoData

2
Nó có thể được thực hiện, nhưng tôi không thể nghĩ ra khỏi đỉnh đầu của mình làm thế nào để thực hiện bước 2 một cách dễ dàng. Dù sao, nếu tôi định viết kịch bản, tôi sẽ chỉ làm toàn bộ trong Powershell bằng cách sử dụng File.GetAccessControl()File.SetAccessControl()
Scott Chamberlain

4

Để thực hiện theo lô (sao chép các phần mềm bảo mật từ thư mục con hoặc tất cả các thư mục của một ổ đĩa vào cùng một thư mục / tệp nghiêm ngặt trên một ổ đĩa khác), hãy tạo một cpdacls.battệp , giả sử, có nội dung này:

@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

Và sau đó chạy nó như thế nào cpdacls.bat e:\ f:\.

Lưu ý rằng cấu trúc thư mục trong thư mục đích phải giống với cấu trúc thư mục trong thư mục nguồn, được lấy từ thư mục gốc , không phụ thuộc vào thư mục con nào bạn đã chỉ định làm thư mục nguồn.


4

Cách dễ nhất, cho đến nay, là sử dụng PowerShell và chạy:

Get-Acl .\file1 | Set-Acl .\file2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.