如何將權限從一個資料夾複製到另一個具有不同內容的資料夾

如何將權限從一個資料夾複製到另一個具有不同內容的資料夾

感謝此處提供的答案 - 我知道如何使用icacls /save & /restore或複製相同資料夾的權限robocopy /MIR。但是,我無法讓他們將相同的使用者權限從資料夾帶到具有不同內容的目標資料夾。使用ìcacls /restore,目標資料夾仍然獲得從其父資料夾繼承的使用者權限(儘管我已經明確停用繼承)。

我的用例是,我有一個便攜式應用程式資料夾,當我將其放入這個有問題的子資料夾時,它將運行中斷,但當我將其放入同一個D:\ 驅動器的根目錄時,它將完全正常工作。我的資料夾路徑沒有任何「禁止」字符,例如% ^ etc.,只有字母,而且路徑也不是很長。

有沒有辦法快速將權限從已知的正確位置複製到目標資料夾?請幫忙。

非常感謝。

插圖

答案1

編輯:

抱歉匆忙發文。

再次檢查後,這裡是我發現的一切:

  • robocopy命令不會將權限指派給內部的檔案或子資料夾。因此,它需要這個額外的步驟(在 Windows 10 上): Folder properties > Security tab > Advanced > Permission = Check the box at "Replace all child object permission entries with inheritable permission entries from this object"
  • Icacls /save那麼Icacls /restore其實也可以工作。但它應用資料夾繼承狀態。如果「來源」啟用了繼承,則目標資料夾也會啟用繼承(從其父級,而不是從來源的父級)。因此,「來源」需要暫時停用資料夾繼承。

*)我認為最好不要這樣做,因為如果出現問題或忘記恢復“來源”上的所有更改,就會破壞來源。

  • 我沒有使用 powershell 進行進一步測試get-acl -path | set-acl -path,但之前我發現它的工作原理如下icacls /restore

對於我的用例,我選擇 robocopy 命令。特別是在發現這個之後https://serverfault.com/questions/475612/replace-permission-entries-on-all-child-objects-using-icacls。我沒有測試這個,只是想像這可以組合成一行 cmd 命令,例如:

robocopy d:\source_folder_permission destination_folder_permission /e /sec /secfix /xc /xn /xo /xx /xl & icacls "destination_folder_permission\*" /q /c /t /reset

就這些。乾杯:)


最後!我找到了夢想的答案。感謝這個人僅使用 Robocopy 處理權限

這是範例robocopy命令:

robocopy d:\source_folder_permission destination_folder_permission /e /sec /secfix /xc /xn /xo /xx /xl

我以管理員身份運行它。

希望這對每個人都有價值。再會!

相關內容