9

Цель: общая папка, в которой пользователи могут создавать файлы, но не могут изменять или удалять их. Пользователи также должны иметь возможность создавать подпапки.

Я предоставил своей группе безопасности следующие расширенные разрешения NTFS:

  • Папка перемещения / Выполнить файл
  • Список папок / чтение данных
  • Читать атрибуты
  • Читать расширенные атрибуты
  • Создание файлов / запись данных
  • Разрешения на чтение

В процессе проб и ошибок я обнаружил, что, НЕ предоставляя «Атрибуты записи», это предотвращает изменение / удаление существующих файлов пользователем (что я и хочу). Тем не менее, мне бы очень хотелось объяснить, почему именно это работает. Единственная теория, которая у меня есть, заключается в том, что удаление / изменение файла изменяет атрибуты файла? Здесь обсуждение в том же духе.

РЕДАКТИРОВАТЬ - Вторая часть моего вопроса не имеет значения, я думал, что я только выбрал «Создать файлы / Запись данных», но у меня также был выбран «Создать папки / Добавить данные».

Более того, я хочу, чтобы пользователи могли создавать подпапки в корне, и я обнаружил, что, предоставляя «Создание файлов / запись данных», это позволяет именно это. Но, опять же, название предполагает, что это разрешение должно разрешать создание файлов, а не папок, поэтому я не понимаю, почему оно работает? Объяснение Microsoft для атрибута «Создание файлов / запись данных» :«Для папок» указывает, может ли пользователь создавать файлы в папке. Для файлов указывает, может ли пользователь изменять файлы или перезаписывать данные. "Нет упоминания о возможности создания подпапок внутри папки?

В общем, я достиг того, что намеревался сделать, но не понимаю, почему это работает?

2 ответа2

6

В процессе проб и ошибок я обнаружил, что, НЕ предоставляя «Атрибуты записи», это предотвращает изменение / удаление существующих файлов пользователем (что я и хочу). Тем не менее, мне бы очень хотелось объяснить, почему именно это работает.

Это функция того, как именно происходит изменение файла. Когда вы изменяете файл, операционная система фактически не изменяет файл, который вы редактируете. Он заменяет редактируемый вами файл измененной копией. Таким образом, по существу, модификация файла берет копию исходного файла, загружает ее в память (где вы ее изменяете), удаляет исходный файл и создает новый файл с тем же именем в том же месте. Поэтому NTFS Delete разрешения требуются для изменения файлов - на самом деле, если вы проверяете Advanced permissions на объекте NTFS, нет разрешения Modify - модификация действительно только удаление и запись.

Таким образом, чтобы создать эту новую копию файла, он должен записать атрибуты файла этого нового файла ... и, конечно, для записи атрибутов требуется разрешение NTFS на Write attributes . Вот почему вы не можете изменить файл без разрешения NTFS на Write attributes .

В частности, благодаря чату с Фицрой, атрибутом файла NTFS, который необходимо записать в контексте безопасности пользователя (не может быть без разрешения « Write Attributes ), при изменении файла, но не при создании совершенно нового. , будет LastModificationTime файла.По словам одного из разработчиков Microsoft Core Team, это часть атрибута Standard Information.

2

Это правда: отсутствие разрешения «Запись атрибутов» приводит к тому, что пользователь не может изменять свои файлы. И согласно документации Microsoft это не имеет смысла. Но изменение файла не подразумевает его удаление и восстановление. Когда приложение открывает файл для модификации, операционная система не удаляет файл. Но операционная система блокирует файл, чтобы предотвратить одновременное изменение. Я предполагаю, что блокировка файла подпадает под понятие «изменение атрибутов файла». Таким образом, неспособность изменить атрибуты приводит к невозможности изменить файл.

Что касается второй части вашего вопроса, я не могу воспроизвести это. Есть два разных разрешения, которые применяются к папке: «Создать файлы /...» и «Создать папки /...», и они работали согласно документации во время моих тестов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .