Дозволи NTFS - створюйте файли та папки, але запобігайте видаленню та модифікації


10

Мета: Спільна папка, в яку користувачі можуть створювати файли, але не змінювати або видаляти їх. Користувачі також повинні мати можливість створювати підпапки.

Я надав моїй групі безпеки такі розширені дозволи NTFS:

  • Повернути папку / виконати файл
  • Список папок / читання даних
  • Прочитайте атрибути
  • Читати розширені атрибути
  • Створення файлів / запис даних
  • Прочитайте дозволи

В результаті проб і помилок я виявив, що, не надаючи "Write Attributes", це призводить до того, що користувач не може змінювати / видаляти існуючі файли (що я хочу). Однак я б дуже хотів пояснення, чому саме це працює. Єдина теорія, яку я маю, - це те, що видалення / модифікація файлу змінює атрибути файлу? Ось дискусія в цьому ж напрямку .

EDIT - Друга частина мого питання не має значення, я вважав, що вибрав лише "Create Files / Write Data", але також вибрано "Create Folders / Append Data".

Крім того, я хочу, щоб користувачі мали змогу створювати підпапки в корені, і я виявив, що, надавши "Створити файли / записати дані", це дозволяє саме це. Але знову ж таки, назва говорить про те, що цей дозвіл повинен просто дозволяти створювати файли, а не папки, тож я не розумію, чому він працює? Пояснення Microsoft атрибутом "Створити файли / записати дані" - "Для папок визначає, чи може користувач створювати файли в папці. Для файлів визначає, чи може користувач змінювати файли або перезаписувати дані." Немає згадки про можливість створення підпапок у папці?

Отже, я домігся того, що хотів зробити, але не розумію, чому це працює?


Вміст файлу NTFS IS "атрибут"; а саме атрибут даних без назви за замовчуванням і, можливо, один або більше названих атрибутів даних.
kreemoweet

Також дивіться хорошу відповідь тут: superuser.com/a/1145363/132727
CrazyTim

Відповіді:


7

В результаті проб і помилок я виявив, що, не надаючи "Write Attributes", це призводить до того, що користувач не може змінювати / видаляти існуючі файли (що я хочу). Однак я б дуже хотів пояснення, чому саме це працює.

Це функція саме того, як відбувається модифікація файлу. Коли ви змінюєте файл, операційна система фактично не змінює файл, який ви редагуєте. Він замінює файл, який ви редагуєте, зміненою вами копією. Отже, по суті, модифікація файлу бере копію оригінального файлу, завантажує його в пам'ять (там, де ви його модифікуєте), видаляє вихідний файл і створює новий файл з тим же ім’ям в тому самому місці. Ось чому Deleteдля редагування файлів потрібні дозволи NTFS - насправді, якщо ви перевіряєте Advanced permissionsна об’єкт NTFS, Modifyдозволу немає - модифікація насправді є лише видаленням і записом.

Отже, щоб створити цю нову копію файлу, він повинен записати атрибути файлу цього нового файлу ... і, звичайно, для написання атрибутів потрібен Write attributesдозвіл NTFS. Тому ви не можете змінювати файл без Write attributesдозволу NTFS.

Зокрема, завдяки чату з Fitzroy , атрибут файлу NTFS, який потрібно писати відповідно до контексту безпеки користувача (що не може бути без Write Attributesдозволу), під час зміни файлу, але не під час створення абсолютно нового. бути файлом LastModificationTime. Це частина Standard Informationатрибута, на думку одного з розробників Microsoft Core Team .


1
"Ось чому для зміни файлів потрібні дозволи NTFS Delete. Фактично, якщо ви перевіряєте розширені дозволи на об'єкт NTFS, дозвіл на зміну немає - модифікація насправді є лише видаленням і записом." Чи можете ви це підтвердити якимись фактами чи посиланнями? Оскільки за допомогою подальшого тестування я виявив, що для зміни вмісту простого текстового файлу (за допомогою блокнота) я просто додав такі дозволи: Писати атрибути, Писати розширені атрибути та Створювати папки / Додавати дані. Я погоджуюся, що різні програми можуть проявляти різну поведінку під час зміни файлу ...
Fitzroy

... проте, я думаю, цей тест доводить, що "Видалити" не потрібно.
Фіцрой

"Це функція саме того, як відбувається модифікація файлу. Коли ви змінюєте файл, операційна система фактично не змінює файл, який ви редагуєте. Він замінює файл, який ви редагуєте, зміненою вами копією. Отже, по суті, модифікація файлу бере копію оригінального файлу, завантажує його в пам'ять (де ви модифікуєте її), видаляє вихідний файл і створює новий файл з тим же ім’ям там же. " - це оман, досить оманливий і грубо неточний на багатьох різних технічних рівнях .
користувач2864740

3

Це правда: відсутність дозволу "Написати атрибути" призводить до того, що користувач не може змінювати свої файли. А згідно з документацією Microsoft це не має сенсу. Але зміна файлу не означає видалення та відновлення його. Коли програма відкриває файл для модифікації, операційна система не видаляє файл. Але операційна система блокує файл, щоб запобігти одночасній модифікації. Думаю, що блокування файлу підпадає під поняття "зміна атрибутів файлу". Таким чином, неможливість змінити атрибути призводить до неможливості модифікувати файл.

У другій частині вашого запитання я не можу це відтворити. До папки застосовуються два різних дозволу: "Створити файли / ..." та "Створити папки / ...", і вони працювали відповідно до документації під час моїх тестів.


Drk - Просто перетравивши свою відповідь. FYI - у запитанні я пропустив дозвіл, я також повинен був вказати "Читання розширених атрибутів". Без цього дозволу я виявив, що користувачі не можуть переглядати вміст файлу (вони отримують помилку "Доступ заборонено"). Я відповідно оновив своє запитання.
Фіцрой

Добре, для мого тесту я припускав, що ви також даєте цей дозвіл. Я виявив, що блокнот не може змінити файл навіть із дозволом '... / write data'. Ось ще одна річ, яку варто зауважити: запис даних та дозвіл на додавання даних залежать від того, як ваша програма відкриє файл для модифікації. Найімовірніше, що в блокноті відкриваються файли для додавання даних завжди, навіть якщо вони не потрібні.
drk.com.ar

У другій частині вашого запитання я не можу це відтворити. До папки застосовуються два різних дозволу: "Створити файли / ..." та "Створити папки / ...", і вони працювали відповідно до документації під час моїх тестів. Ви абсолютно праві, моя помилка, я вважав, що вибрав лише "Створити файли / записати дані", але також вибрав "Створити папки / додати дані".
Фіцрой
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.