2

На дисках NTFS раньше использовалось такое поведение, при котором файл сохранял бы разрешения исходного файла, если бы он был перемещен в папку на том же томе.

Я знаю это по своему опыту, и это можно увидеть здесь:https://support.microsoft.com/en-us/kb/310316

Но сегодня я пытался показать это поведение коллеге, и оно просто не сработало. Каждый раз, когда файл будет просто иметь разрешения из новой папки, связанной с ним.

Я пробовал на 3 разных машинах, и он больше не работает так. Когда это изменилось? И нет, упомянутая ранее настройка реестра не установлена.

Есть идеи, когда это изменилось?

[Редактировать]

Просто пример, чтобы сделать это более понятным

Предположим, у меня есть эти папки в моем диске C.

  • C:\Shared
    • \За работой
    • \Final

И у меня есть четыре группы: - Стажеры - Сотрудники - Менеджеры - Персонал (в котором 3 предыдущих члена).

Теперь давайте рассмотрим разрешения (упрощенно).

  • C:\Shared
    • Не наследует
    • Явно разрешает тотальный контроль администраторам
    • Явно позволяет Изменить для менеджеров
  • C:\Shared\Working
    • Наследует от Shared
    • Явно позволяет изменить сотрудникам
  • C:\Shared\Final
    • Наследует от Shared
    • Явно позволяет читать сотрудникам

Теперь предположим, что у меня есть файл в рабочей папке с именем Bullshit.doc.

Ранее, если файл был перемещен (вырезан / вставлен) из рабочей папки в конечную папку, он сохранял бы исходные разрешения, т. Е. Менеджеры и сотрудники могли изменять, а стажеры не имели бы разрешений.

Теперь, когда я пытаюсь переместить Bullshit.doc, при перемещении он просто унаследует разрешения из папки Final, то есть просто простит, что у стажеров не должно быть доступа.

Мой вопрос: это изменилось, не так ли? Или я схожу с ума? Я на 99% уверен, что это работает так же, как описано в КБ.

Я знаю, что у меня были подобные проблемы в прошлом, когда пользователи верхнего уровня перемещали файлы между папками (с другим набором разрешений), а затем жаловались, что стажеры не могут читать файлы. Мне приходилось не раз объяснять, что вырезать / вставить не получится, что их нужно скопировать / вставить / удалить. Это было на Windows 2003 точно, но я мог быть по крайней мере 2008 R2.

[Редактировать 2] Теперь с картинками !!!

Итак, я решил попробовать и повторить. С актуальными файлами, а не с простыми примерами. Вот...

Так что это исходная папка. Просмотреть все неявные разрешения и одно явное разрешение. Какая-то папка

Теперь давайте создадим там файл. И проверьте это разрешения. Просто случайный документ

Время переместить файл в место назначения. Исходная папка была просто временной папкой. Давайте проверим права доступа к папке назначения. Намного менее запутанные разрешения

Переместив папку, давайте проверим ее разрешения ... WTAF !!!

Хм ... не то, что я ожидал. Даже если это был просто файл, из того, что я собрал в КБ выше, он должен сохранять права доступа. И вот как я помню, как он себя вел.

Но похоже это изменилось. И я не могу найти официальный источник того, когда это произошло.

Это заставляет меня сомневаться в моем здравомыслии.

2 ответа2

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.

1

Есть еще одна важная деталь, которую нужно добавить к превосходному и исчерпывающему объяснению harrymc, и эта деталь в конечном итоге вызывает разделение, когда перемещение файла иногда ведет себя в стиле 2003, а иногда в стиле 2008.

То, как NTFS внутриобъемные перемещения были обновлены в 2008/Vista и более поздних версиях, - это не полная перестройка, а просто добавление второго шага в фоновом режиме.

Шаг 1) MFT обновлен; файл перемещен и сохраняет оригинальные разрешения
(Так же, как в 2003/XP и ранее. Перемещение на этих ОС останавливается на этом шаге.)

Шаг 2) ACL обновляются, чтобы отбросить унаследованные разрешения исходной родительской папки и применить унаследованные разрешения новой родительской папки.
(Это дополнительный шаг, добавленный в 2008/Vista, чтобы файлы имели разрешения для целевой папки.)

Тем не менее, если пользователь, выполняющий перемещение, имеет права на изменение и явно не имеет права на изменение разрешений , шаг 2 завершится неудачно (но не сообщит вам), и вы в конечном итоге столкнетесь с поведением старой школы, так что это выглядит как вещи вернулись в 2003 году снова.

В этом же сценарии, если кто-то копирует файл, а затем удаляет оригинал (так же, как файловая система обрабатывает перемещение между томами), все работает так, как вы ожидаете.

Не существует какого-либо изящного решения - вы либо предоставляете пользователям права « Изменить разрешения», чтобы выполнить шаг 2 , либо файлы, перемещенные между папками с разными разрешениями на одном и том же томе файлового сервера, сохранят свои исходные разрешения, пока они не будут принудительно повторно распространены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .