Назад | Перейти на главную страницу

Как обойти ошибку проектирования NTFS Move / Copy?

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

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

Вот краткий пример:

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

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

Вопросы следующие:

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

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

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

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

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

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

JR

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

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

Я могу придумать обходные пути:

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

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

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

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

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

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

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