Спробуймо розібратися, як можна налаштовувати NTFS права на папки та файли, використовуючи командний рядок Windows (cmd).

Для тих хто не знає, що ніколи не чув про NTFS права спробую коротко і просто пояснити що це таке.

NTFS права, вони жAccess Control List- список контролю доступу, це список прав користувачів при доступі до файлів і папка. Це спосіб ОС захистити файли та папки від несанкціонованого доступу. Коли користувач намагається отримати доступ до файлу, ОС відкриває таблицю NTFS прав (ACL) і дивиться, що дозволено даному користувачеві робити з цим файлом.

Наприклад, для файлу доступ, до якого користувач намагається отримати, йому надано права тільки на читання. У цьому випадку він зможе відкрити файл, що-небудь в ньому змінити, але при спробі зберегти зміни він отримає повідомлення про те, що у нього немає прав на виконання цієї операції. Більш детально ви можете почитати Вікіпедію.

Для керування ACL (NTFS правами на файли та папки) в операційній системі є вбудована консольна утилітаCACLS. Ось її man:

D:\>cacls /? Перегляд та зміна таблиць керування доступом (ACL) до файлів

CACLS ім'яФайла [/T] [/E] [/C] [/G ім'я:доступ] [/R ім'я [. ]] [/P ім'я:доступ [. ]] [/D ім'я [. ]] ім'яФайлу Виведення таблиць керування доступом. /T Заміна таблиць керування доступом для зазначених файлів у поточному каталозі та всіх підкаталогах. /E Зміна таблиці керування доступом замість її заміни. /C Продовження помилок відмови у доступі. /G Назва: доступ Визначення дозволів для вказаних користувачів. "доступ": R Читання W Запис C Зміна (запис) F Повний доступ /R ім'я Відгук дозволів для користувача (лише разом з /E). /P ім'я:доступ Замінадозволів для вказаного користувача. "доступ": N Відсутня R Читання W Запис C Зміна (запис) F Повний доступ /D ім'я Заборона доступу для вказаного користувача. Для вибору декількох файлів використовуються знаки підстановки. У команді можна вказати кілька користувачів.

Скорочення: CI - Спадкування контейнерами (Container Inherit). ACE буде успадковано папками. OI - Спадкування об'єктами (Object Inherit). ACE буде успадковано файлами. IO - Тільки успадковане (Inherit Only). ACE не застосовується до поточного файлу/папки.

Почитавши ман, ми можемо помітити, що за допомогою цієї утиліти можна змінювати, створювати, видаляти права NTFS для файлів і папок з cmd.

Щоб зрозуміти, як працює дана утиліта, розглянемо можливості CACLS на прикладах.

У нас на диску D:\ є тестовий татко з ім'ям Papka.

Подивимося NTFS права, призначені для цієї папки:

D:\>cacls d:\papka d:\papka NT AUTHORITY\SYSTEM:(OI)(CI)F BUILTIN\Адміністратори:(OI)(CI)F BUILTIN\Користувачі: (OI)(CI)R СТВОРЧИК-ВЛАСНИК:(OI)(CI)(IO)F

Для того щоб розібратися, що нам видала cacls, розглянемо по рядках її відповідь і ці ж права якщо дивитися їх з-під GUI:

NT AUTHORITY\SYSTEM:(OI)(CI)F– див. наступний рядок – там такі самі права;

BUILTIN\Адміністратори:(OI)(CI)F– група Адміністратори має повні права (літера F), права успадковуються файлами (літери OI), успадковуються папками (літери CI):

папки

BUILTIN\Користувачі:(OI)(CI)R– група Користувачі має права тільки читання (літера R), права успадковуються файлами (літери OI), успадковуються папками (літери CI):

прав

СТВОРЩИК-ВЛАСНИК:(OI)(CI)(IO)F– власник файлу (тоткористувач, який створив файл) має повні права (літера F), права успадковуються файлами (літери OI), успадковуються папками (літери CI) та мають лише успадкування (літери IO):

прав

А ось докладніше:

папки

Щоб дати повні права новому користувачеві на нашу тестову папку з командного рядка, потрібно виконати cacls з такими параметрами:

D:\>cacls d:\papka /E /G dimon:F оброблений каталог: d:\papka

А тепер перевіримо результат:

D:\>cacls d:\papka d:\papka NT AUTHORITY\SYSTEM:(OI)(CI)F BUILTIN\Адміністратори:(OI)(CI)F BUILTIN\Користувачі: (OI)(CI)R СТВОРЩИК-ВЛАСНИК:(OI)(CI)(IO)F COMP\dimon:(OI)(CI)F

Можна помітити, що з'явився новий рядок, який говорить нам, що локальний користувач dimon має повні права (літера F), права успадковуються файлами (літери OI), успадковуються папками (літери CI). Перевіримо це і у провіднику:

прав

Видалити доступ користувачеві dimon до нашої тестової татці можна командою:

D:\>cacls d:\papka d:\papka NT AUTHORITY\SYSTEM:(OI)(CI)F BUILTIN\Адміністратори:(OI)(CI)F BUILTIN\Користувачі: (OI)(CI)R СТВОРЧИК-ВЛАСНИК:(OI)(CI)(IO)F

Рядок, що відповідає правам користувача dimon, зник.

А тепер і видалімо папку зовсім: