フォルダーの移動時に継承されたアクセス許可が自動的に更新されない

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

適用対象:  Windows Server 2012R2
元の KB 番号:   320246

現象

アクセス制御リスト (ACL) には、親から継承されたとマークされているアクセス許可が表示される場合がありますが、親自体が ACL でこれらのアクセス許可を構成していない可能性があります。 継承がまだ有効になっている場合でも、この現象が発生する可能性があります。 それ以降に親フォルダーの ACL が変更された場合、子の ACL は継承されたアクセス許可を受け取る原因です。 また、子の ACL を変更しようとすると、継承が適用されます (変更によって ACL が継承から保護されるマークが付けされていない限り)。 この動作は、ACL の編集を開始する前に継承状態が確認されていない場合に驚く場合があります。

注意

この動作は、Vista ベースのコンピューターでフォルダーを移動Windowsできません。 フォルダーまたはファイルがターゲット フォルダーまたはファイルの ACL を継承できるので、移動操作が機能します。 フォルダーまたはファイルには、親から継承されたとマークされたアクセス許可も含されます。 これは、設計上、XP から Windows Vista および Windows Server 2008 Windows変更です。

原因

この動作は、フォルダーの移動によって発生する可能性があります。 フォルダーを移動すると、ACL は変更されません。継承されたアクセス許可は更新されません。 この記事 のコンテキストでの 移動は、常に同じボリューム内を移動する意味に注意してください。

ファイルまたはフォルダーを移動すると、ACL も移動され、変更されません。 このフォルダーで継承が有効になっている場合でも、継承されたアクセス許可は自動的には更新されません。 次にアクセス許可を変更すると、ACL が更新され、親は強制的にアクセス許可を伝達します。

この動作は、次の原因で発生する場合もあります。

  • CACLS を使用して親フォルダーのアクセス許可を設定しても、サブフォルダーには反映されない。 /T オプションは、継承を使用して権限を伝達する意味ではなく、すべての ACL を上書きします。

  • 継承を自動的に伝達しない API を使用して親フォルダーのアクセス許可を設定する (Adssecurity.dll)。

  • バックアップから別の場所への復元。

解決方法

予期しないアクセス許可の変更を回避するには、設定を保持する前に、ファイル/フォルダーの ACL を保護に設定します。 それ以外の場合は、エクスプローラー ACL エディターを使用して、移動したファイル/フォルダーの ACL を手動で更新します。 継承を無効にしてから再度有効にして、適切な継承されたアクセス許可で ACL を強制的に更新します。 VBScript を使用してこのプロセスを自動化する場合があります。

状態

この動作は仕様です。 この動作は、Vista のデザイン変更が原因Windowsしません。

動作の再現手順

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