Чому Windows обробляє всі дочірні об’єкти NTFS під час зміни батьківського ACL?


10

Чому Windows обробляє всі дочірні об’єкти NTFS під час зміни батьківського ACL?

Я б очікував такої поведінки, якби я встановив прапорець "Замінити всі дозволені дозволені об'єкти ...", але навіть коли це поле не буде встановлено, Windows буде обробляти всіх дітей.


@Ben Це не робиться оболонкою, тому що каскад успадкованих дозволів повинен бути реплікувати на всі дочірні об’єкти з увімкненою спадщиною , тому це потрібно робити навіть при безпосередньому виклику API Windows. FYI: Дозвіли копіюються з міркувань продуктивності.
Андреас

Відповіді:


10

У Windows права доступу не динамічно успадковуються. Тобто, при спробі відкрити файл Windows дивиться лише на ACL цього файлу, а не на ACL каталогів у дереві, що містить файл. Це означає, що при зміні ACL каталогу Windows повинен негайно оновлювати дозволи всіх файлів і підкаталогів у вказаному каталозі.

У Windows параметр успадкування в ACL не вказує жодної форми динамічного успадкування. Це лише прапор, який вказує на те, що при зміні ACL батьківського каталогу всі файли та підкаталоги в дереві, у яких встановлений прапор спадщини, також повинні бути оновлені.

Ті з нас, які досить старі, щоб пам’ятати Novell NetWare, пам’ятають, що це було однією з великих відмінностей від NetWare, оскільки в NetWare успадкування дозволів є (було?) Динамічним. У той час було багато дискусій щодо того, який підхід кращий, хоча історія викликала суперечки. Динамічні ACL вимагають, щоб ОС перевіряла ACL кожного батьківського каталогу під час спроби відкрити файл, але зміна ACL відбувається швидко. У відкриваючому файлі Windows потрібно перевірити лише один ACL, але, як ви знайшли, це означає, що зміна каталогу ACL може бути повільною.


1
Це має ідеальний сенс. ACL читаються набагато більше, ніж написано, тому має сенс кешувати "успадковане значення" для швидшого доступу до читання за рахунок більшої складності у випадку рідшого використання запису.
Олександр - Відновіть Моніку

@ Олександр: Я не розумію, чому ця складність повинна піддаватися кінцевому користувачеві. Чому б не брехати і не сказати кінцевому користувачеві "це динамічно", а кешувати речі всередині?
Кевін

@Kevin - адже це може зайняти деякий час для розповсюдження дозволів, і в цей період часу виконання дозволів може не відбутися так, як ви очікуєте?
davidbak

13

Будь-який дочірній об’єкт, налаштований успадковувати його дозволи від батьківського об'єкта, потребує обробки. Явно визначені дозволи на дочірні об’єкти не впливають.

Параметр "Замінити дозволи на всі дочірні об'єкти" не тільки поширюватиме дозволи на всі дочірні об'єкти, але також видалить та замінить усі чітко визначені дозволи на всі дочірні об’єкти.


5

За замовчуванням дочірні папки успадковують дозволи з батьківської папки. Якщо припустити область застосування за замовчуванням під час додавання / зміни дозволів у батьківській папці (ця папка, вкладені папки та файли), то всі дочірні папки будуть оновлені, щоб відобразити зміни дозволів у батьків.

Поставити прапорець, на який ви посилаєтесь, - це операція "одноразово", яка видалить усі чітко визначені дозволи на всі дочірні папки та замінить їх успадковуваними дозволами від батьківських і повторно включить успадкування дозволів у дочірніх папках.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.