web-dev-qa-db-ja.com

フォルダ間でファイルをカットアンドペーストしても、元のフォルダのアクセス許可は保持されなくなりました

NTFSドライブでは、ファイルが移動されたときに、同じボリューム上のフォルダーに移動された場合、元のファイルのアクセス許可が保持されるという動作が使用されていました。

私はこれを経験から知っており、ここで見ることができます: https://support.Microsoft.com/en-us/kb/310316

しかし、私は今日この振る舞いを同僚に見せようとしていましたが、うまくいきませんでした。毎回、ファイルはそれに関連付けられた新しいフォルダからのアクセス許可を持っているだけです。

私は3つの異なるマシンで試しましたが、そのようには機能しなくなりました。いつ変わったの?いいえ、前述のレジストリ設定は設定されていません。

これがいつ変わったのか考えてみませんか?

[編集]

より明確にするための単なる例

Cドライブにこれらのフォルダがあるとします。

  • C:\ Shared
    • \ワーキング
    • \最後の

そして私には4つのグループがあります:-インターン-従業員-マネージャー-スタッフ(前の3つをメンバーとして持っています)。

それでは、権限(簡略化)について考えてみましょう。

  • C:\ Shared
    • 継承しません
    • 管理者に完全な制御を明示的に許可します
    • マネージャーへの変更を明示的に許可
  • C:\ Shared\Working
    • 共有から継承
    • 従業員への変更を明示的に許可
  • C:\ Shared\Final
    • 共有から継承
    • スタッフへの読み取りを明示的に許可

ここで、Bullshit.docというファイルがWorkingフォルダーにあるとしましょう。

以前は、ファイルがWorkingフォルダーからFinalフォルダーに移動(切り取り/貼り付け)された場合、元のアクセス許可が保持されていました。つまり、マネージャーとスタッフは変更でき、インターンにはアクセス許可がありませんでした。

これで、Bullshit.docを移動しようとすると、移動すると、Finalフォルダーからアクセス許可が継承されます。つまり、インターンがアクセスできないようにするだけです。

私の質問は:これは変わったね?または私は夢中になるのですか? KBに記載されているとおりに機能したと99%確信しています。

過去にこれと同様の問題が発生したことはわかっています。上位レベルのユーザーが(権限のセットが異なる)フォルダー間でファイルを移動し、インターンがファイルを読み取れないと不平を言ったときです。カット/ペーストが機能しないこと、コピー/貼り付け/削除する必要があることを何度も説明する必要がありました。確かにWindows2003に戻っていましたが、少なくとも2008R2になる可能性があります。

[編集2]写真付き!!!

さて、私は試して複製することにしました。単純な例ではなく、実際のファイルを使用します。ここにあります...

つまり、これがソースフォルダです。すべての暗黙的なアクセス許可と1つの明示的なアクセス許可を参照してください。 Some folder

それでは、そこにファイルを作成しましょう。そして、それの許可を確認してください。 Just a random document

ファイルを移動先に移動する時間です。元のフォルダーは単なる一時フォルダーでした。宛先フォルダのアクセス許可を確認しましょう。 Way less convoluted permissions

フォルダを移動した後、その権限を確認しましょう... WTAF!!!

うーん...私が期待するものではありません。単なるファイルであっても、上記のKBで収集したものから、アクセス許可を保持する必要があります。そして、それは私がそれが振る舞ったことを覚えている方法です。

しかし、それは変わったようです。そして、私はそれがいつ起こったかの公式の情報源を見つけることができません。

これは私に私の正気を疑わせます。

3
Luiz Angelo

[〜#〜] ntfs [〜#〜] はまだ進化し、変化しています。継承されたアクセス許可の処理に対する変更は、Vistaで最初に登場し、Windows 7でさらに進化したと思います。リンクのレジストリ設定は、XPからのものであり、私が知る限り、新しいバージョンでは無視されます。

ファイルをコピー/移動したときに何が起こるかを理解するには、最初に暗黙的アクセス許可と明示的アクセス許可の違いを理解する必要があります。

暗黙のアクセス許可は親フォルダーから継承されるため、親フォルダーと一緒に保存されます。それらは子供と一緒に保管されないため、移動/コピーできません。つまり、これらのアクセス許可は、親から取得されるため、子が親フォルダーにある場合にのみ適用されます。

明示的なアクセス許可はフォルダ/ファイルに手動で与えられ、NTFS属性として アクセス制御リスト (ACL)に保存されます。それらはアイテムに属していると見なすことができ、ターゲットファイルシステムもNTFSである場合は、アイテムと一緒に移動される場合があります。

このNTFSアーキテクチャのいくつかの結果は次のとおりです。

  • フォルダ/ファイルがコピーの場合、新しいターゲットエントリがターゲットフォルダのNTFSテーブルに作成されます。したがって、コピーされたファイルはすべての明示的なアクセス許可を失い、新しい親フォルダーからのみ継承されます。
  • ファイル/フォルダが同じボリューム内に移動の場合、そのNTFSエントリが移動され、含まれているすべての属性とアクセス許可が含まれます。したがって、すべての明示的なアクセス許可は保持されますが、古い継承されたアクセス許可は失われ、代わりに新しい親フォルダーのアクセス許可が取得されます。
  • フォルダ/ファイルが異なるボリューム間で移動の場合、移動はコピーとして扱われ、元の権限は保持されません。コピーとの唯一の違いは、コピーが完了したときにソースが削除されることです。
  • 継承されたアクセス許可のみがあり、移動するアクセス許可がないファイル/フォルダー。このようなアイテムは、常に親フォルダーからアクセス許可を継承します。
  • フォルダ/ファイルは、その親からの非継承権限としてマークされる場合があります。その場合、そのすべてのアクセス許可はACLとして、つまり明示的なアクセス許可として保存されます。

これは、フォルダ/ファイルが同じボリューム内に移動されたときに、暗黙的および明示的な元のNTFSアクセス許可を保持すると通常主張されているほとんどの確立されたドキュメントに反します。これは、以前のバージョンのWindowsでかつては真実だったかもしれませんが、Windows7およびWindows10の暗黙的なアクセス許可には当てはまらないものとして、私自身と投稿者によって確認されました。

誤って文書化された移動ルールの例については、記事 Windows 2008R2およびWindows7でファイルを移動またはコピーする際のファイルとフォルダーのアクセス許可の処理方法 を参照してください。この記事は、NTFSでのコピーと移動を管理する真のルールを一緒に発見したポスターとの以下の私の議論の源でした。

2
harrymc

Harrymcの優れた包括的な説明に追加する重要な詳細が追加されており、この詳細は最終的に分割動作を引き起こし、ファイルの移動が2003スタイルで動作することもあれば2008スタイルで動作することもあります。

NTFSボリューム内移動が2008/Vista以降で更新された方法は、完全なオーバーホールではなく、バックグラウンドで2番目のステップを追加するだけです。

ステップ1) MFTが更新されました。ファイルは移動され、元の権限を保持します
(2003/XP以前と同じように。これらのOSでの移動は、このステップで停止します。)

ステップ2) ACLが更新され、元の親フォルダーの継承されたアクセス許可が削除され、新しい親フォルダーの継承されたアクセス許可が適用されます。
(これは、2008/Vistaが追加した追加の手順であり、ファイルにターゲットフォルダーのアクセス許可が与えられます。)

ただし、移動を実行しているユーザーが 変更 権利があり、明示的に 権限の変更 そうです、ステップ2は失敗し(ただし、教えてくれません)、昔ながらの振る舞いになってしまうので、2003年に戻ったようです。

この同じシナリオで、誰かがファイルをコピーしてから元のファイルを削除した場合(ファイルシステムがボリューム間の移動を処理するのと同じ方法)、すべてが期待どおりに機能します。

優雅な解決策はありません-ユーザーに提供する 権限の変更 権利そう ステップ2 成功するか、同じファイルサーバーボリューム上の異なるアクセス許可フォルダー間で移動されたファイルは、強制的に再伝播されるまで元のアクセス許可を保持します。

1