Давайте попробуем разобраться, как можно настраивать 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):
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:\>
А теперь проверим результат:
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). Проверим это и в проводнике:
Удалить доступ юзеру 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:\>
Надеюсь, что я все просто и подробно расписал. Если есть вопросы – добро пожаловать в комментарии
Группа: Гости
Регистрация: --
Статус:
А какой командой задать такие права
D:\tmp\sl\u1>cacls wr
D:\tmp\sl\u1\wr BUILTIN\Администраторы:(OI)(CI)R
BUILTIN\Пользователи:(OI)(CI)R
BUILTIN\Пользователи:(OI)(CI)(IO)(специальный доступ:)
DELETE
READ_CONTROL
SYNCHRONIZE
FILE_GENERIC_READ
FILE_GENERIC_WRITE
FILE_GENERIC_EXECUTE
FILE_READ_DATA
FILE_WRITE_DATA
FILE_APPEND_DATA
FILE_READ_EA
FILE_WRITE_EA
FILE_EXECUTE
FILE_DELETE_CHILD
FILE_READ_ATTRIBUTES
FILE_WRITE_ATTRIBUTES
D:\tmp\sl\u1>