У меня есть каталог, общий доступ к которому осуществляется через 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 не позволяет удалять файлы или каталоги с установленным флагом «только для чтения». Он также не позволяет сбросить флаг «только для чтения». Обратите внимание, что графический интерфейс проводника подразумевает, что флаг «только для чтения» не влияет на каталоги; на самом деле он предотвращает удаление каталога. (Он не препятствует записи новых файлов в каталог.) Приложение:Флаг «Только чтение» не препятствует перемещению каталога.
Другие примечания:
Вы можете явно запретить право «Удалить дочерний элемент» для родительского каталога, но если у пользователя есть полный доступ к родительскому каталогу, он может удалить запретительную запись.
Наличие права «Удалить дочерний» в родительском каталоге не позволяет пользователям удалять файлы из дочернего каталога или удалять дочерний каталог, если он не пуст. Приложение:он позволяет пользователям перемещать дочерний каталог.