如何在複製檔案時,連同檔案的NTFS權限一起複製

 

有兩個小工具會使用到:

1.cacls
顯示或修改檔案的存取控制清單 (ACLs)

CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
               [/P user:perm [...]] [/D user [...]]
filename       顯示 ACL。
/T             變更指定檔案的 ACL 於現有的目錄或所有子目錄中。
/E             編輯 ACL 而非將它取代。
/C             拒絕存取的錯誤繼續發生。
/G user:perm   授與指定的使用者存取權限。
               Perm 的值可以是: R 讀取,C 變更 (寫入),F 完全控制
/R user        撤消已指定的使用者存取權限 (只有當 /E 存在時才有效)
/P user:perm   取代已指定的使用者存取權限。
               Perm 的值可以是: N 沒有權限,R 讀取,C 變更 (寫入)
               F 完全控制
/D user        拒絕已指定的使用者存取。您可以在指令中使用萬用字元
               一次指定數個檔案。您可以在指令中指定數個使用者。

2.Resource Kits裡面的工具-scopy.exe

SCOPY source destination [/o] [/a] [/s]

source         Specifies files to copy.
destination    Where to copy files to.
/o             Copies owner security information.
/a             Copies auditing information. Requires that you have
               the Manage Auditing User Right on both the source
               and destination computers.
/s             Copies all files in subdirectories.



請注意!在使用scopy的時候需要注意一些小問題,不然可能會出差錯喔,
請看實作過程:

C:\cmd>cacls sphone.vbs
C:\cmd\sphone.vbs BUILTIN\test:N
                  BUILTIN\Administrator:F
....顯示c:\cmd目錄中sphone.vbs中的權限

C:\cmd>copy sphone.vbs \testacl
已複製 1 個檔案。
.... copy sphone.vbs到c:\testacl目錄

C:\cmd>cacls \testacl\sphone.vbs
C:\testacl\sphone.vbs Everyone:F
....顯示 copy 過來的c:\testacl\sphone.vbs的權限,
    注意:權限沒有一起 copy 過來。

C:\cmd>del \testacl\sphone.vbs
....刪除c:\testacl\sphone.vbs

C:\cmd>scopy sphone.vbs \testacl
....使用scopy將c:\cmd\sphone.vbs copy 到c:\testacl目錄

C:\cmd>cacls \testacl\sphone.vbs
C:\testacl\sphone.vbs BUILTIN\testacl:N
                      BUILTIN\Administrator:F
....顯示 copy 過來的c:\testacl\sphone.vbs的權限,注意:權限已經和
    檔案一起 copy 過來了。

C:\cmd>del \testacl\sphone.vbs
....刪除c:\testacl\sphone.vbs

C:\cmd>copy sphone.vbs \testacl
已複製 1 個檔案。
.... copy sphone.vbs到c:\testacl目錄

C:\cmd>cacls \testacl\sphone.vbs
C:\testacl\sphone.vbs Everyone:F
....顯示 copy 過來的c:\testacl\sphone.vbs的權限,
    請注意sphone.vbs的權限

C:\cmd>scopy sphone.vbs \testacl
....使用scopy copy sphone.vbs(希望能將權限一並 copy )

C:\cmd>cacls \testacl\sphone.vbs
C:\testacl\sphone.vbs Everyone:F
....但是sphone.vbs的權限依舊沒有改變


因此....
在使用scopy copy 檔案時一定需要注意目的目錄是否存在同名檔案,
不然的話 scopy 的結果不會是你預期的結果。