При завданні прав доступу до файлів і каталогів, наприклад на файлової кулі, де кожен користувач має свою папку, хочеться обмежити права власників цих папок, щоб вони, наприклад, не змогли раптом видалити всю свою папку.
Для цього можна задати ACL на батьківської папки, що забороняє операцію видалення. Створимо її для Everyone, заборонимо операцію Delete, і застосуємо це правило тільки для папок користувачів, тобто не будемо його поширювати на більш низькі рівні ієрархії.
Однак, якщо на батьківської папці у вас задано правило, наприклад, для всіх користувачів домену (Domain Users або Users), що дозволяє їм повний доступ Full Access (що в принципі не рекомендується), то в цьому випадку користувачі збережуть можливість видалення папок, незважаючи на що забороняє правило.
Чому так відбувається? Здавалося б, що забороняє правило (Deny) має перевагу перед вирішальними правилами (Allow), в разі, якщо обидва типи правил застосовуються через успадкування (це також справедливо, якщо обидва правила вказані явно в DACL).
Просто в цьому випадку, користувачі отримають право видалення папки внаслідок наявності у них права Delete subfolders and files, яким вони володіють відповідно до DACL батьківської папки.
Якщо ж ми приберемо права Full Control (які за замовчуванням включають в себе Delete subfolders and files) і залишимо тільки Change, то користувачі втратять право видалення папки, як ми і задумували.
Розглянемо ще один окремий випадок.
Якщо в списку контролю доступу батьківської папки зазначено право Full Control для творця папки, CREATOR OWNER для дочірніх файлів і папок, то користувач, який створив папку, автоматично отримає повні права для цієї папки.
Однак це не зовсім так.
Видалити папку він все-таки не зможе, так як для нього як і раніше діє правило, що забороняє видалення, успадковане від батьківської папки.
Але ж він володіє повними правами на папку, включаючи право Delete subfolders and files.
Так в тому то і справа, що це право дає йому можливість видаляти папки та файли, що входять в створену їм, дочірню, папку. А видалити саму дочірню папку він не може, так як він не володіє правом Delete subfolders and files для батьківської папки.
Наслідком цього є також і те, що йому буде відмовлено і в праві перейменувати папку, так як процес перейменування фактично складається з видалення об'єкта файлової системи і створення його з новим ім'ям.
Однак всі ці можливості будуть доступні адміністраторам, природно в разі, якщо в DACL батьківської папки ви дали групі адміністраторів повні права. У цей випадку вони будуть користуватися тим самим правом Delete subfolders and files, певним для батьківської папки.
Тут є ще одна деталь.
Права Full Control, певні для творця папки фактично успадковуються від батьківської папки, також як і правило, яке забороняє операцію видалення.
В цьому випадку можна вважати, що обидва правила визначені на одному рівні - і правило Allow, і правило Deny успадковуються від вищестоящих папок. У цьому випадку правило Deny має пріоритет по відношенню до правила Allow.
Однак, якщо користувач, який створив папку додасть в її DACL явну запис, що дозволяє йому операцію видалення - а він зможе це зробити, так як має право Full Control не оцю папку - то він отримає можливість як перейменувати її, так і видалити.
Відбувається це тому, що явно зазначені записи мають пріоритет, перед успадкованими від вищестоящих папок.
Тобто виходить, що явно вказане дозволяє правило (Allow) переопределяет успадковане забороняє правило (Deny).
Якщо ж ми вкажемо явно певне правило Deny для цього каталогу, то з кожним буде мати пріоритетом по відношенню як до успадкованим правилами (Allow або Deny), так і по відношенню до явно зазначених вимог Allow.