Как обойти недостатки дизайна NTFS Move / Copy?

31

Как известно любому, кто имел дело с разрешениями файлового сервера, NTFS обладает интересной особенностью / недостатком дизайна, известной как проблема перемещения / копирования.

Как объясняется в этой статье MS KB , разрешения для папки или файла не наследуются автоматически от родительского объекта, если папка перемещена, а источник и место назначения находятся на одном и том же томе NTFS. Разрешения наследуются, если папка копируется или если источник и место назначения находятся на разных томах.

Вот быстрый пример:

У вас есть две общие папки на одном и том же томе NTFS, которые называются «Техники» и «Менеджеры». Группа Техников имеет доступ RW к папке Техников, а группа Менеджеров имеет доступ RW к папке «Менеджеры». Если у кого-то есть доступ к обоим, и они перемещают подпапку из папки «Менеджеры» в папку «Техники», перемещаемая папка по-прежнему доступна только пользователям в группе «Менеджеры». Группа «Техники» не может получить доступ к подпапке, даже если она находится в папке «Техники» и должна наследовать разрешения сверху.

Как вы можете себе представить, это вызывает обращения в службу поддержки, тикеты и бесполезные циклы при решении этих проблем с конечным пользователем, не говоря уже о гнезде разрешений для крыс, которое вы можете получить, если пользователи часто перемещают папки между различными защищенными папками / областями в тот же объем.

Вопросы:

Каков наилучший способ обойти этот недостаток дизайна NTFS и как вы справляетесь с ним в вашей среде?

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

Дэвид Арчер
источник
2
Я знаю, что пример «Менеджеры / Техники» предназначен только для иллюстрации недостатка, но в некоторых случаях вам нужно именно такое поведение: если кто-то случайно переместит папку с Менеджеров на Техников, вы, вероятно, не захотите, чтобы Техники могли получить к ним доступ. Это.
Опека - Восстановите Монику
2
Это на самом деле не недостаток, именно так работают разрешения для файлов. Это было задокументировано с момента выпуска NTFS. Я не могу поверить, что некоторые люди рекомендуют не использовать разрешения на доступ к файлам, а использовать только общие права доступа для контроля доступа. Это идет вразрез с основами безопасности для файлового сервера Microsoft. Причина, по которой перемещение папки / файла на том же томе не наследуется, заключается в том, что папка / файл фактически не перемещается на диске, меняется только указатель, который мы видим.
Майкл Браун

Ответы:

12

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

За эти годы (10+) я обнаружил, что разрешения NTFS более сложны и приводят к большему количеству ошибок. Если права доступа установлены неправильно или наследование нарушено, вы открываете данные, и их сложно найти и увидеть. Кроме того, как вы говорите, вы столкнулись с проблемой перемещения / копирования.

Места, где вы должны использовать ACL на уровне каталогов / файлов; Я не знаю другого решения, кроме проверки здоровья на регулярной основе.

Джеймс Ристо
источник
10

Ну, это не совсем недостаток. Это правило для обработки разрешений при перемещении файлов существовало со времен по крайней мере бета 2 NT3.1 (хотя, очевидно, не наследование, поскольку это было добавлено только в Windows 2000). Это так же хорошо, как и любая другая функция Windows. Я очень сочувствую вашей точке зрения, так как мало кто из нас не сгорел на этом этапе. Но это то, что сисадмин быстро усваивает.

JR

Джон Ренни
источник
6
У меня был спор с Рэймондом Ченом в его блоге об этом. Microsoft «продает» NTFS как имеющую разрешение «наследование», а затем откатывает назад, когда эта конкретная щель в броне поднимается. NTFS имеет наследование разрешений во время создания файла, помещая явные записи ACE в файлы при их создании. Я бы сказал, что до тех пор, пока документация по маркетингу и документации говорит об их системе наследования, как будто в режиме реального времени либо документация, либо код содержит ошибки. Они должны выбрать один и исправить это.
Эван Андерсон
1
Ну, это компромисс. Если бы наследование осуществлялось в режиме реального времени, то каждый раз, когда вы открывали файл в нижней части глубокого дерева, ОС должна была запускать дерево, чтобы выяснить, каковы действующие разрешения. Конечно, компромисс заключается в том, что если вы измените разрешения в верхней части глубокого дерева, у вас будет долгое ожидание! Разве Active Directory не использует ту же модель?
Джон Ренни
Объекты AD правильно наследуют разрешения нового родителя при перемещении между контейнерами, и я бы сказал, что это ожидаемое «правильное» поведение при перемещении файлов / папок в NTFS.
Дэвид Арчер
3
@renniej: AD действительно использует наследование в реальном времени. Файловая система Netware сделала это давным-давно. NTFS тоже могла бы это сделать, если бы Microsoft реализовала это. Это «дорога не взята». Что меня раздражает, так это то, что документация Microsoft: NTFS и Explorer «играют», как наследование в реальном времени (то есть ложь). Скажите это нам, как есть, или исправьте поведение в соответствии с документацией!
Эван Андерсон
@renniej Как сказал Эван Андерсон, Netware сделал это в 1990 году, когда они были королями. Проблема устраняется путем создания другого индекса файловой системы, который отслеживает «список видимости». Microsoft предпочла не делать этого, но, возможно, могла бы использовать ее для будущего выпуска Windows Server.
sysadmin1138
6

Мы использовали NTFS начиная с NT 3.51, и хотя мы видели эту «проблему» (как и почти все), она не доставила нам особых проблем:

  • Мы всегда советуем людям копировать файлы, если им нужно переместить их из одного общего каталога в другой. «Удерживайте нажатой клавишу CTRL при перетаскивании и убедитесь, что маленький + показывает», - это обычная фраза.
  • Наши общие папки имеют довольно простую структуру, и общие папки, которые мы создаем, не слишком часто пересекаются между группами, поэтому люди с большей вероятностью захотят скопировать файлы.
  • Мы видим проблему главным образом в нашем «общем» пространстве - папках, где каждый может читать / писать, но эти каталоги в основном недолговечны, поэтому проблема исчезает, когда они очищаются.
Опека - Восстановите Монику
источник
4

Обходные пути, которые я могу придумать:

  • найти способ сделать папки с разными разрешениями на разных томах NTFS
  • Создайте запланированное задание (один раз в час или один раз в день, в зависимости от частоты запросов поддержки), которое будет проходить через папки и сбрасывать все разрешения, чтобы они были такими же, как и у верхнего уровня. Это не идеально, тем более, если в папках много файлов, но это исправит проблему, если не будет хорошего решения, такого как исправление реестра на стороне сервера. Команда, которую вы захотите посмотреть, называется «cacls», которую вы затем можете добавить в командный файл.

Отказ от ответственности - я пришел из Unix-фона (и реализовал последний, чтобы исправить различные недостатки разрешений - это кажется странным, но делает работу), так что может быть гораздо лучше исправить.

отметка
источник
+1 - первый ответ, который дает Марк, - лучший выбор. Это боль, но это ваш лучший способ обойти это глупое дизайнерское решение в NTFS 5.
Эван Андерсон,
Чтобы расширить: это место, где мои друзья, использующие SharePoint, сказали бы «используй SharePoint»! Точно так же мои друзья по управлению версиями и друзья по системе управления документами указывали бы на Subversion, Documentum и т. Д. И говорили «используйте это». Этот выбор дизайна в NTFS представляет собой огромную проблему, и она почти заставляет задуматься, действительно ли Microsoft использует свое собственное программное обеспечение, когда вам приходится бороться с ним в собственной сети. (Мне кричит, что Microsoft не использует их программное обеспечение так же, как мы используем их с нашими пользователями, на самом деле. Должно быть, хорошо, чтобы компания была заполнена "специалистами по знаниям".)
Эван Андерсон,
1
Я бы согласился, что в идеале мы могли бы разделить все общие папки на их собственные тома, на практике это невозможно для большой среды (тысячи общих папок). Кроме того, без какой-либо фанки соединительной точки или символической ссылки вуду это означает потерю возможности иметь вложенные подпапки с различными разрешениями на них.
Дэвид Арчер
1
@ Дэвид: перемещение данных по общим ресурсам приведет к копированию и удалению. Перемещение данных в общем ресурсе приведет к перемещению. Если вы сделаете каждую общую папку корнем иерархии разрешений без подпапок, имеющих более ограничивающее разрешение, вы уменьшите проблему. Все еще некрасиво, хотя. (У меня есть сервер W2K3 с 2200+ отдельными общими папками, и я не вижу проблем с производительностью ...)
Эван Андерсон
3

При переходе от имени администратора я использую xcopy / s / e / c / h / r / k / y - все, кроме владения файлами и ACL, это означает, что наследование ACL включается автоматически. Никогда не приходилось сталкиваться с ситуацией, когда пользователь хотя переехал

Максимус Минимус
источник
2
Ваши пользователи живы?
Эван Андерсон
4
Иногда мне интересно ...
Максимус Минимус
@Even: Может быть, никто из них не в двух группах!
SamB
+1 за привлечение людей к инструменту, который решает эту проблему при ведении файлов (наряду со многими другими); тем не менее, XCOPY устарела: ROBOCOPY.EXE является его очень способным преемником.
Jnaab
2
Извините за придирки, но не копируйте _copy_ файлы (вместо _moving_ файлы?) - похоже, у автора нет проблем с копированием, у него есть только проблемы с _moving_. Возможно, я ошибаюсь из-за недостатка опыта, поэтому, пожалуйста, исправьте меня, если я ошибаюсь (т.е. вы используете команду del после использования xcopy), тогда файлы фактически «копируются и удаляются»! = переехал?)
colemik
3

Я использую групповую политику / политики безопасности / файловую систему, чтобы отслеживать сложные разрешения. (НИКОГДА не используйте «заменить разрешения» в политике).

Запланируйте CACLS для сброса всех разрешений в течение ночи, после чего следует gpupdate / force для повторного применения разрешения из политики. Работает как шарм.

Александру Ника
источник
Предположительно это только для серверов Windows? Так как групповая политика должна применяться к объектам домена, ее нельзя применить к общим ресурсам хранения, отличным от Windows, я мог бы представить?
Богатый М
2

Начиная с Windows 7 (или, возможно, Windows Vista), разрешения для папки или файла DO наследуются от родителя, если папка перемещена, а источник и место назначения находятся на одном и том же томе NTFS - если файл или папка копируются через Проводник. В более ранних ОС вы можете использовать Far manager - он позволяет включить наследование разрешений от места назначения (наряду с множеством других функций). Хотя Far может показаться не дружелюбным для обычного пользователя.

GCRaistlin
источник
0

Очень простой обходной путь - просто заархивировать файлы и распаковать их в каталог назначения.

боб
источник
Я только что попробовал это, и, к сожалению, это не сработало. Права доступа к zip-архиву различаются еще до того, как я с ним что-нибудь сделаю. Унаследованные разрешения остаются, но явные не создаются.
Богатый М