Цель: общая папка, в которой пользователи могут создавать файлы, но не могут изменять или удалять их. Пользователи также должны иметь возможность создавать подпапки.
Я предоставил своей группе безопасности следующие расширенные разрешения NTFS:
- Папка перемещения / Выполнить файл
- Список папок / чтение данных
- Читать атрибуты
- Читать расширенные атрибуты
- Создание файлов / запись данных
- Разрешения на чтение
В процессе проб и ошибок я обнаружил, что, не предоставляя «Атрибуты записи», это предотвращает изменение / удаление существующих файлов пользователем (что я и хочу). Тем не менее, мне бы очень хотелось объяснить, почему именно это работает. Единственная теория, которая у меня есть, заключается в том, что удаление / изменение файла изменяет атрибуты файла? Здесь обсуждение в том же духе .
РЕДАКТИРОВАТЬ - Вторая часть моего вопроса не имеет значения, я думал, что я только выбрал «Создать файлы / Запись данных», но у меня также был выбран «Создать папки / Добавить данные».
Более того, я хочу, чтобы пользователи могли создавать подпапки в корне, и я обнаружил, что, предоставляя «Создание файлов / запись данных», это позволяет именно это. Но опять же, название предполагает, что это разрешение должно просто разрешать создание файлов, а не папок, поэтому я не понимаю, почему оно работает? Объяснение Microsoft для атрибута «Создать файлы / запись данных» : «Для папок указывает, может ли пользователь создавать файлы в папке. Для файлов указывает, может ли пользователь изменять файлы или перезаписывать данные». Там нет упоминания о возможности создания подпапок внутри папки?
В общем, я достиг того, что намеревался сделать, но не понимаю, почему это работает?
источник
Ответы:
Это функция того, как именно происходит изменение файла. Когда вы изменяете файл, операционная система фактически не изменяет файл, который вы редактируете. Он заменяет редактируемый вами файл измененной копией. Таким образом, по существу, модификация файла берет копию исходного файла, загружает ее в память (где вы ее изменяете), удаляет исходный файл и создает новый файл с тем же именем в том же месте. Вот почему
Delete
разрешения NTFS необходимы для изменения файлов - фактически, если вы проверяетеAdvanced permissions
объект NTFS,Modify
разрешения нет - модификация - это на самом деле просто удаление и запись.Итак, чтобы создать эту новую копию файла, он должен записать атрибуты файла этого нового файла ... и, конечно, для записи атрибутов требуется
Write attributes
разрешение NTFS. Вот почему вы не можете изменить файл безWrite attributes
разрешения NTFS.В частности, благодаря чат с Фицрой , тем атрибут файла NTFS , которая должна быть написана под контексте безопасности пользователя (что не может быть, без
Write Attributes
разрешения), при изменении файла, но не при создании совершенно нового, будет быть файлаLastModificationTime
. Это частьStandard Information
атрибута, по словам одного из разработчиков Microsoft Core Team .источник
Это правда: отсутствие разрешения «Запись атрибутов» приводит к тому, что пользователь не может изменять свои файлы. И согласно документации Microsoft это не имеет смысла. Но изменение файла не подразумевает его удаления и восстановления. Когда приложение открывает файл для модификации, операционная система не удаляет файл. Но операционная система блокирует файл, чтобы предотвратить одновременное изменение. Я предполагаю, что блокировка файла подпадает под понятие «изменение атрибутов файла». Таким образом, неспособность изменить атрибуты приводит к невозможности изменить файл.
Что касается второй части вашего вопроса, я не могу воспроизвести это. Есть два разных разрешения, которые применяются к папке: «Создать файлы / ...» и «Создать папки / ...», и они работали согласно документации во время моих тестов.
источник