NTFS: запретить/предотвратить удаление каталога в папке, которая в противном случае является «личной»

NTFS: запретить/предотвратить удаление каталога в папке, которая в противном случае является «личной»

У меня есть каталог, общий доступ к которому осуществляется через CIFS с «сервера» Windows 7. Домена нет: просто рабочая группа.

Мои клиенты получают доступ к этому каталогу через локальную сеть через учетные записи "Стандартный пользователь" (без "Администратор") на сервере. Они используют этот ресурс для "личного хранилища", поэтому им нужны полные права на создание/редактирование/удаление всего, что находится внутри него.

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

Я работаю с разрешениями NTFS: я удалил inherit из must-not-delete-directory, чтобы иметь возможность работать с его разрешениями.

Я удалил учетную запись клиента, и на этом этапе присутствуют только SYSTEM, Administrators и я сам с их разрешениями. На этом этапе клиенты не могут ни удалить, ни открыть папку.

Если я добавлю правило «Запретить полный доступ», ничего не изменится (как и ожидалось).

Ноесли я изменю это правило и разрешу только «Список папок / чтение данных», оставив все остальные на «Запретить»... пользователь может удалить папку!?!?!?

как это возможно? что я не понимаю?

Примечание: я дважды проверил с одним файлом, а не с каталогом: та же проблема!

Это вывод Icacls:

НЕЛЬЗЯ УДАЛЯТЬ NT AUTHORITY\SYSTEM:(OI)(CI)(F) muletto\Zane:(OI)(CI)(F) BUILTIN\Administrators:(OI)(CI)(F) muletto\myNetworkUser:(OI)(CI)(RX)

Успешно обработано 1 файлов; Не удалось обработать 0 файлов

решение1

OK. Я могу подтвердить, что пользователь может удалить файл (или удалить пустой каталог) без права записи в этот файл/каталог, если у него есть доступ Delete Child к родительскому каталогу. Если я и знал об этом раньше, то забыл об этом, но это задокументированное поведение, например, см.КБ101651.

Есть (как минимум) три способа решить вашу проблему:

  • Предоставьте пользователям доступ Modify вместо доступа Full Control к родительскому каталогу. Единственные различия между Full Control и Modify — это право Delete Child (позволяющее пользователю удалять дочерние объекты) и право Write DAC (позволяющее пользователю изменять разрешения на объект, даже если он не является владельцем).

  • Установите разрешения на общий ресурс на Изменить вместо Полного. Это должно иметь тот же эффект, но повлияет только на сетевых пользователей, а не на интерактивных. Одним из побочных эффектов является то, что пользователи не могут изменять разрешения, даже для своих собственных файлов.

  • Установите флаг «только для чтения» на дочернем файле/каталоге. Документация не дает ясности по этому вопросу, но мое тестирование (Windows 7) показывает, что Delete Child не позволяет удалять файлы или каталоги с установленным флагом «только для чтения». Он также не позволяет сбросить флаг «только для чтения». Обратите внимание, что графический интерфейс проводника подразумевает, что флаг «только для чтения» не влияет на каталоги; на самом деле он предотвращает удаление каталога. (Он не препятствует записи новых файлов в каталог.) Приложение:Флаг «Только чтение» не препятствует перемещению каталога.

Другие примечания:

  • Вы можете явно запретить право «Удалить дочерний элемент» для родительского каталога, но если у пользователя есть полный доступ к родительскому каталогу, он может удалить запретительную запись.

  • Наличие права «Удалить дочерний» в родительском каталоге не позволяет пользователям удалять файлы из дочернего каталога или удалять дочерний каталог, если он не пуст. Приложение:он позволяет пользователям перемещать дочерний каталог.

Связанный контент