Главная > Windows > Изменение NTFS прав на папки и файлы из командной строки

Изменение NTFS прав на папки и файлы из командной строки


25 декабря 2010. Разместил: dimon
Давайте попробуем разобраться, как можно настраивать 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 не будет применим к текущему файлу/папке.

D:\>


Почитав ман, мы можем заметить, что с помощью этой утилиты можно изменять, создавать, удалять 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


D:\>


Для того чтобы разобраться, что же нам выдала cacls, рассмотрим по строкам ее ответ и эти же права если смотреть их из под GUI:

NT AUTHORITY\SYSTEM:(OI)(CI)F – см. следующую строку – там такие же права;

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

NTFS права группы BUILTINАдминистраторы


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

NTFS права группы BUILTINПользователи


СОЗДАТЕЛЬ-ВЛАДЕЛЕЦ:(OI)(CI)(IO)F – владелец файла (тот пользователь, который создал файл) имеет полные права (буква F), права наследуются файлами (буквы OI), наследуются папками (буквы CI) и имеют только наследование (буквы IO):

NTFS права создателя-владельца


А вот более подробно:

NTFS права создателя-владельца




Чтобы дать полные права новому пользователю на нашу тестовую папку из командной строки нужно выполнить cacls с такими параметрами:

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

D:\>


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

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


D:\>


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

NTFS права пользователя


Удалить доступ юзеру dimon к нашей тестовой папочке можно командой:

D:\>cacls d:\papka /E /R dimon
обработан каталог: 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


D:\>


Строка, соответствующая правам пользователя dimon, исчезла.

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

D:\>rmdir d:\papka

D:\>


Надеюсь, что я все просто и подробно расписал. Если есть вопросы – добро пожаловать в комментарии fellow

Вернуться назад