フォルダを移動すると継承されたアクセス許可は自動的に反映されない

現象

アクセス制御リスト (ACL) には、親から継承したアクセス許可であることが示されていても、親自体の ACL にはそのアクセス許可が設定されていないことがあります。この現象は、継承が有効な場合にも発生することがあります。その後で親フォルダの ACL が変更されると、親から継承されたアクセス許可が子の ACL に適用されます。また、子の ACL を変更しようとした場合、親から継承されたアクセス許可が適用されます (ACL が継承から保護されている場合はこの限りではありません)。ACL を編集する前に継承の状態に気付いていなかった場合、この動作により、意図した結果とは異なる結果になる場合があります。



: この現象は、Windows Vista ベースのコンピュータでフォルダを移動した場合には発生しません。移動したフォルダやファイルは移動先のフォルダやファイルの ACL を継承するため、移動処理が正しく機能するようになっています。フォルダやファイルには、親から継承されたアクセス許可も設定されます。Windows Vista (Windows Server "Longhorn") では仕様が変更されており、Windows XP とは動作が異なります。

原因

この現象は、フォルダの移動が原因で発生することがあります。フォルダを移動しても ACL は変更されず、継承されたアクセス許可は更新されません。この資料において、"移動" とは常に同じボリューム内での移動を意味していることに注意してください。



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



この現象は、以下のことが原因で発生する場合もあります。


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

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

    関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。


    266461 [HOWTO] ファイルやフォルダのアクセス許可の自動継承を設定する方法 - ADSI
  • バックアップから別の場所に復元している。

解決方法

アクセス許可に意図していなかった変更が適用されることを回避するには、元の設定を維持する必要がある場合は、移動する前にファイルやフォルダの ACL を "保護" に設定します。あるいは、エクスプローラの ACL エディタを使用して、移動したファイルやフォルダの ACL を手動で更新します。継承を無効にしてから、再び有効にすると、ACL が正しく継承されたアクセス許可によって更新されます。さらに、VBScript を使用して、このプロセスを自動化することもできます。


この方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。


279682 [HOWTO] ADsSecurity.dll を使用して NTFS フォルダに ACE を追加する方法

状況

この動作は仕様です。Windows Vista では、仕様変更により動作が異なります。

詳細

問題の再現手順

  1. "everyone: 読み取り" および "users: 変更" アクセス許可を持つ "test1" フォルダを作成します。

  2. "test1\sub" サブフォルダを作成して、親からの継承を有効にします (デフォルトで有効になっています)。このフォルダには、"everyone: 読み取り" および "users: 変更" が継承されたアクセス許可として表示されます。

  3. "administrators: フル コントロール" アクセス許可のみを持つ別のフォルダ "test2" を作成します。

  4. "sub" サブフォルダを "test2" に移動します。

  5. "test2\sub" のアクセス許可を表示すると、親のアクセス許可が "administrators: フル コントロール" でも、継承されたアクセス許可として、"everyone: 読み取り" および "users: 変更" が表示されます。

  6. エクスプローラの ACL エディタを使用して、他のグループやユーザー (Guest など) を "sub" の ACL に追加し、たとえば読み取りのアクセス許可を付与します。[適用] をクリックすると、"everyone: 読み取り" と "users: 変更" は削除され、追加したユーザーやグループの横に、継承されたアクセス許可として、"administrators: フル コントロール" が表示されます。

プロパティ

文書番号:320246 - 最終更新日: 2008/01/13 - リビジョン: 1

フィードバック