Короткий ответ
- Потому что при копировании (а не при перемещении) 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;
- Предложить безопасную конфигурацию прав, чтобы пользователи могли перетаскивать папки, но не просматривать чужие данные.