NTFS ドライブでは、ファイルを同じボリューム上のフォルダーに移動すると、元のファイルのアクセス許可が保持されるという動作が採用されていました。
私は経験からこれを知っており、ここでそれを見ることができます: https://support.microsoft.com/ja-jp/kb/310316 より
しかし、今日、同僚にこの動作を見せようとしたのですが、うまくいきませんでした。毎回、ファイルには、関連付けられている新しいフォルダーからのアクセス許可が付与されるだけだったのです。
3 台の異なるマシンで試してみましたが、もうそのようには動作しません。いつ変更されたのでしょうか? いいえ、前述のレジストリ設定は設定されていません。
いつこれが変わったかご存知ですか?
[編集]
わかりやすくするために例を挙げます
C ドライブにこれらのフォルダーがあるとします。
- C:\共有
- \働く
- \最後の
そして、次の 4 つのグループがあります: - インターン - 従業員 - マネージャー - スタッフ (前の 3 つがメンバーとして含まれています)。
ここで、権限(簡略化)について考えてみましょう。
- C:\共有
- 継承しない
- 管理者に完全な制御を明示的に許可する
- 管理者への変更を明示的に許可する
- C:\共有\作業中
- 共有から継承
- 従業員への変更を明示的に許可する
- C:\共有\最終
- 共有から継承
- スタッフへの読み取りを明示的に許可する
ここで、Working フォルダに Bullshit.doc というファイルがあるとします。
以前は、ファイルが作業フォルダから最終フォルダに移動 (切り取り/貼り付け) された場合、元の権限が保持され、つまり、マネージャとスタッフは変更でき、インターンには権限がありませんでした。
ここで、Bullshit.doc を移動しようとすると、移動時に Final フォルダーからアクセス許可が継承されるだけになります。つまり、インターンにはアクセス権がないことが単純に許可されます。
私の質問は、これは変更されたのでしょうか? それとも私がおかしいのでしょうか? KB に記載されているとおりに動作したと 99% 確信しています。
以前、上位レベルのユーザーがフォルダー間でファイルを移動し (権限セットが異なる)、インターン生がファイルを読み取れないと苦情を言われたときに、これに似た問題に遭遇したことがあります。カット/ペーストは機能せず、コピー/ペースト/削除する必要があることを何度も説明しなければなりませんでした。これは確かに Windows 2003 のときでしたが、少なくとも 2008 R2 ではそうだったかもしれません。
[編集2] 写真付きになりました!!!
わかりました。それで、再現してみることにしました。単純な例ではなく、実際のファイルを使って。これがそれです...
これがソース フォルダーです。すべての暗黙のアクセス許可と 1 つの明示的なアクセス許可を確認します。
ファイルを宛先に移動する時間です。元のフォルダーは単なる一時フォルダーでした。宛先フォルダーの権限を確認しましょう。
うーん... 予想外でした。それが単なるファイルだったとしても、上記の KB で収集した情報から判断すると、権限は保持されるはずです。そして、それが動作していたと記憶しています。
しかし、どうやら変わったようです。そして、いつそれが起こったのかの公式の情報源は見つかりません。
これを見ると自分の正気を疑ってしまいます。
答え1
NTFSは、まだ進化と変化を続けています。継承されたアクセス許可の処理に関する変更は、Vista で初めて導入され、Windows 7 でさらに進化したと考えられます。リンクのレジストリ設定は XP のものですが、私の知る限り、新しいバージョンでは無視されます。
ファイルをコピー/移動するときに何が起こるかを理解するには、まず暗黙のアクセス許可と明示的なアクセス許可の違いを理解する必要があります。
暗黙の権限親フォルダから継承されるため、親フォルダに保存されます。子フォルダには保存されないため、移動/コピーできません。つまり、これらの権限は親フォルダから継承されるため、子フォルダが親フォルダ内にある場合にのみ適用されます。
明示的な権限手動でフォルダ/ファイルに付与され、保存されます アクセス制御リスト(ACL) は NTFS 属性として扱われます。これらはアイテムに属していると見なされ、ターゲット ファイル システムも NTFS である場合はアイテムとともに移動される場合もあります。
この NTFS アーキテクチャの結果は次のとおりです。
- フォルダ/ファイルがコピーしました、ターゲット フォルダーの NTFS テーブルに新しいターゲット エントリが作成されます。したがって、コピーされたファイルは明示的なアクセス許可をすべて失い、新しい親フォルダーからのみ継承されます。
- ファイル/フォルダが同じボリューム内で移動NTFS エントリは、含まれるすべての属性とアクセス許可とともに移動されます。したがって、明示的なアクセス許可はすべて保持されますが、継承された古いアクセス許可は失われ、代わりに新しい親フォルダーのアクセス許可が取得されます。
- フォルダ/ファイルが異なるボリューム間で移動移動はコピーとして扱われ、元の権限は一切保持されません。コピーとの唯一の違いは、コピーが完了するとソースが削除されることです。
- 継承された権限のみを持つファイル/フォルダーには、移動する権限はありません。このようなアイテムは、常に親フォルダーから権限を継承します。
- フォルダー/ファイルは、親から権限を継承しないものとしてマークされている場合があります。その場合、そのすべての権限は ACL として、つまり明示的な権限として保存されます。
これは、ほとんどの確立されたドキュメントに反しています。通常、フォルダー/ファイルを同じボリューム内に移動すると、暗黙的および明示的の両方の元の NTFS アクセス許可が保持されると主張されています。これは、以前のバージョンの Windows では当てはまっていたかもしれませんが、Windows 7 および Windows 10 の暗黙的アクセス許可では当てはまらなくなったことが、私自身と投稿者によって確認されました。
誤って記載された移動ルールの例については、次の記事を参照してください。 Windows 2008 R2 および Windows 7 でファイルを移動またはコピーするときにファイルとフォルダーのアクセス許可がどのように処理されるかこの記事は、投稿者との以下の議論の元となり、そこで私たちは NTFS でのコピーと移動を管理する真のルールを一緒に発見しました。
答え2
harrymc の優れた包括的な説明には、さらに重要な詳細事項が追加されており、この詳細事項によって、ファイルの移動が 2003 スタイルで動作する場合もあれば、2008 スタイルで動作する場合もあるという分割動作が発生します。
2008/Vista 以降で更新された NTFS ボリューム内移動の方法は、完全なオーバーホールではなく、バックグラウンドで 2 番目のステップが追加されただけです。
ステップ1)MFT が更新され、ファイルは移動され、元の権限が保持されます。
(2003/XP 以前と同様です。これらの OS での移動はこの手順で停止します。)
ステップ2)ACL が更新され、元の親フォルダーの継承されたアクセス許可が削除され、新しい親フォルダーの継承されたアクセス許可が適用されます。
(これは、ファイルにターゲット フォルダーのアクセス許可が付与されるように 2008/Vista で追加された追加手順です。)
ただし、移動を実行しているユーザーが修正する権利を有しておらず、明示的に権限の変更そうです、ステップ 2 は失敗します (ただし、通知されません)。結局、古い動作に戻り、物事が再び 2003 年に戻ったように見えます。
同じシナリオで、誰かがファイルをコピーして元のファイルを削除すると (ファイル システムがボリューム間の移動を処理するのと同じ方法)、すべてが期待どおりに動作します。
良い解決策はありません。ユーザーに権限の変更権利だからステップ2成功するか、同じファイル サーバー ボリューム上の異なるアクセス許可のフォルダー間で移動されたファイルは、強制的に再伝播されるまで元のアクセス許可を保持します。