Почему при перетаскивании файлов (Drag'n'Drop) NTFS-права не сохраняются?

Добрый день! <br/> Постепенно разбираю обязанности администратора после университета и возник вопрос к знатокам. <br/> <br/> У нас на сервере Windows Server 2019 есть общая папка "Обмен", в которой находятся папки разных отделов. Пользователей домена распределил по соответствующим группам и настроил права так, чтобы сотрудник одного отдела не имел доступа в папку другого. <br/> <br/> По просьбе руководства нужно было организовать возможность для пользователя одного отдела переносить <b>drag'n'drop</b>-ом файлы и папки в папку другого отдела. Мне удалось настроить так, чтобы пользователь мог переносить и заменять <b>только файлы</b>, но при попытке перенести папку появляется ошибка о недостатке прав. <br/> <br/> На скриншоте ниже показана текущая настройка для доменных пользователей:
  • 13 февраля 2026 г. 12:00
Ответы на вопрос 2
Короткий ответ
- Потому что при копировании (а не при перемещении) Windows создаёт новый объект в целевой папке, и этот новый объект наследует NTFS‑разрешения от папки‑приёмника. Оригинальные ACL при этом не копируются.
- Перетаскивание папки часто обрабатывается как «копирование» (или как копирование + удаление), и для создания новой папки/вложенных объектов в приёмнике нужны соответствующие права — если их нет, операция завершится ошибкой.

Подробно — почему так происходит
1. Поведение «перетаскивания» в проводнике
   - Если вы перетаскиваете внутри одного и того же тома NTFS, по умолчанию это операция «переместить» (move) — объект физически переименовывается/перемещается, его ACL остаются прежними.
   - Если перетаскивание между разными томами (или с локального ПК на сетевой ресурс) — это «копировать» (copy): создаётся новый файл/папка в целевой папке, и он получает унаследованные разрешения от целевой папки, а не исходные ACL.
   - Пользователь может вынудить операцию: Shift = move, Ctrl = copy (в Проводнике).

2. Почему при копировании ACL не сохраняются
   - При создании нового объекта NTFS по умолчанию применяет наследуемые разрешения от родительской папки целевого каталога. Это нормально и так задумано (задаёт единообразие прав в папке).
   - Сохранить исходные ACL можно только специальными средствами (robocopy /COPYALL, инструменты резервного копирования с правом восстановления, вручную Get‑Acl/Set‑Acl), либо если вы выполняете «перемещение» в пределах тома.

3. Почему у вас не получается перетянуть папку (ошибка прав), хотя файлы перетаскиваются
   - Для создания новой папки в целевой папке требуется разрешение «Create folders / Append data» (в расширенных правах — Create folders).
   - Для создания файлов — «Create files / Write data». Видимо, вы дали пользователям право создавать/заменять файлы, но не право создавать новые папки.
   - При копировании папки Проводник должен читать её содержимое и создавать те же вложения в приёмнике — для этого нужны права чтения исх. содержимого и права создания в приёмнике. Если хоть одного из них нет — процесс падает.
   - Также при перемещении (если удаляется исходная папка) нужны права удаления в исходной папке.

Что можно сделать (варианты решения)
1. Если нужно просто разрешить пользователю создавать папки в целевой папке
   - В ACL целевой папки (Advanced permissions) дать группе/пользователю Allow: Create folders / Append data (можно применить «This folder only» или «This folder and subfolders», в зависимости от задачи).
   - Проверить, что у пользователя есть и «Create files / Write data», если требуется создавать файлы.
   - Это даст возможность перетаскивать папки (они будут создаваться в приёмнике и получат права от приёмника).

2. Если нужно копировать/переносить вместе с исходными NTFS‑правами (сохранить ACL)
   - Используйте robocopy с опцией сохранения прав:
     robocopy "Источник" "\\server\share\Папка" /E /COPYALL
     /COPYALL копирует все атрибуты, включая ACL и владельца. Для перемещения можно добавить /MOVE.
   - Учтите: чтобы восстановить owner и SACL, учётной записи, запускающей robocopy, нужны привилегии (SeRestorePrivilege и т. п.) — чаще такие копии выполняют администраторы или сервисные учётные записи.
   - Аналогично можно использовать инструменты резервного копирования/восстановления, которые сохраняют ACL.

3. Если хотите, чтобы пользователь мог создавать объекты, но не просматривать чужие
   - Можно дать право «Create folders / Create files» на уровень родительской папки, но не давать право «List folder / Read data» на уже существующие подразделы — тогда пользователь сможет создать свой каталог (и станет его владельцем) и работать внутри. Это делается тонко и требует тестирования, чтобы не оставить «дыр».
   - Используйте встроенную группу Creator Owner и наследуемые права: например, на уровне общего каталога дать «Creator Owner» право полного управления для созданных им объектов.

4. Практический совет
   - Проверьте, откуда пользователь перетаскивает: с локального ПК (в этом случае всегда будет copy) или внутри сервера (может быть move).
   - Для отладки включите отображение расширенных прав и посмотрите, есть ли у пользователя Create folders в целевой папке и Delete/Modify в исходной.
   - Если нужно сохранить ACL массово — делегируйте задачу администратору и используйте robocopy /COPYALL или средства резервного копирования.

Примеры команд
- Скопировать и сохранить все атрибуты и ACL:
  robocopy "C:\Исход" "\\server\Шэр\Приёмник" /E /COPYALL
- Переместить и сохранить всё:
  robocopy "C:\Исход" "\\server\Шэр\Приёмник" /E /MOVE /COPYALL

Если хотите, могу:
- Посмотреть (пошагово) какие конкретно права поставить, исходя из вашего снимка ACL;
- Предложить безопасную конфигурацию прав, чтобы пользователи могли перетаскивать папки, но не просматривать чужие данные.
учитывайте, что при переносе, происходит попытка сохранить действующие права источника.. 
а при копировании - применить права действующие по месту назначения..
возможности изменения тактики, пока что видел только в Far, но важнее хотя бы знать и помнить этот принцип винды
Похожие вопросы