本文提供在行動資料夾時不會自動更新繼承許可權的問題解決方案。
原始 KB 編號: 320246
徵兆
存取控制 清單 (ACL) 可能會顯示標示為已繼承自父系的許可權,但父代本身可能不會在其 ACL 中設定這些許可權。 即使仍啟用繼承,仍可能會發生此徵兆。 父資料夾 ACL 的任何後續變更都會讓子系的 ACL 接收繼承的許可權。 此外,任何變更子系 ACL 的嘗試都會套用繼承(除非變更會將 ACL 標示為不受繼承保護)。 如果您開始編輯 ACL 之前尚未注意到繼承狀態,此行為可能會令人吃驚。
注意
當您執行 Windows Vista 型電腦時,移動資料夾無法造成此行為。 移動作業現在可運作,因為資料夾或檔案可以繼承目標資料夾或檔案的 ACL。 資料夾或檔案也有標示為已繼承自父系的許可權。 這是從 Windows XP 到 Windows Vista 和 Windows Server 2008 的設計變更。
原因
此行為可能是移動資料夾所造成。 當您移動資料夾時,ACL 不會變更,而且不會更新繼承的許可權。 請注意, 本文內容中的移動 一律表示在相同的磁碟區內移動。
當您移動檔案或資料夾時,ACL 也會移動,而且不會以任何方式變更。 即使啟用此資料夾的繼承,繼承的許可權也不會自動更新。 下次變更許可權時,ACL 將會更新,這會強制父代傳播其許可權。
此行為也可能由下列原因所造成:
使用 CACLS 設定父資料夾的許可權不會傳播至子資料夾。 /T 選項並不表示使用繼承傳播許可權,而是覆寫所有 ACL。
使用不會自動傳播繼承的 API 來設定父資料夾的許可權(例如Adssecurity.dll)。
從備份還原至不同的位置。
解決方法
若要避免非預期的許可權變更,請先將檔案/資料夾的 ACL 設定為 受保護 ,然後再移動時,再保留設定。 否則,請使用總管 ACL 編輯器,手動更新已移動檔案/資料夾的 ACL。 停用 ,然後再次啟用繼承,以強制使用正確的繼承許可權更新 ACL。 您也可以使用 VBScript 將此程序自動化。
狀態
這是依照設計的行為。 此行為不會因為 Windows Vista 中的設計修改而發生。
重現行為的步驟
- 使用 everyone:read 和 users:change 許可權建立 test1 資料夾。
- 建立test1\sub 子資料夾,並啟用父代的繼承(預設值)。 此資料夾應該會顯示 everyone:read 和 users:change 作為繼承的許可權。
- 建立另一個只有 administrators:full control 許可權的資料夾 test2。
- 將 子 子資料夾移至test2。
- 檢視 test2\sub 的許可權,以查看 所有人:read 和 users:change 作為繼承的許可權,雖然父系許可權是 administrators:full control。
- 將另一個群組/使用者(例如來賓)新增至子授與的 ACL,例如,使用總管 ACL 編輯器讀取存取權。 單擊 [ 套用] 之後, 會移除 everyone:read 和 users:change ,而且只有 administrators:full control 會顯示為您剛才新增的許可權旁邊的繼承許可權。