継承されたアクセス許可は、フォルダーを移動するときに自動的に更新されません

この記事では、フォルダーを移動するときに継承されたアクセス許可が自動的に更新されない問題の解決策を示します。

元の製品バージョン:   Windows Server 2012 R2
元の 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 の設計が変更された場合には発生しません。

動作を再現する手順

  1. everyone:read と users:change のアクセス許可を持つ test1 フォルダーを 作成します。
  2. test1\sub サブフォルダーを作成し、親からの継承を有効にする (既定)。 このフォルダーには 、everyone:read と users:change を継承された アクセス許可として表示する必要があります。
  3. administrators:full control アクセス許可のみを使用 して、別のフォルダー test2 を 作成します。
  4. サブサブ フォルダーを test2 に移動します。
  5. test2\sub のアクセス許可を表示して 、everyone:read および users:change as inherited permissions although the parents permission is administrators:full control.
  6. 別のグループ/ユーザー (ゲストなど) をサブ付与の ACL に追加します (例: エクスプローラー ACL エディターを使用した読み取りアクセス)。 [適用] をクリック すると 、everyone:readusers:change が削除され 、administrators:full control だけが、追加したアクセス許可の横に継承されたアクセス許可として表示されます。