NTFS — разрешения. Разрешения доступа к файлам и папкам в NTFS Программа быстрое назначение прав в ntfs

В данной статье подробно рассмотрены вопросы использования программы Xcacls.exe…

В данной статье подробно рассмотрены вопросы использования программы Xcacls.exe (средства Extended Change Access Control List) для просмотра и изменения разрешений NTFS для файлов и папок.
С помощью Xcacls.exe можно установить все параметры безопасности для файловой системы, доступ к которым осуществляется из командной строки в проводнике (с этой целью Xcacls.exe отображает и изменяет списки управления доступом (ACL) файлов).
Рекомендуется использовать Xcacls.exe для автоматической установки Windows 2000 Professional или Windows 2000 Server. С ее помощью устанавливаются исходные права доступа для папок, в которых находятся файлы операционной системы. В процессе переноса программного обеспечения на серверы и рабочие станции Xcacls.exe обеспечивает одноступенчатую защиту от удаления пользователем файлов и папок.
Программа Xcacls.exe входит в состав пакета Windows 2000 Resource Kit . В центре загрузки Microsoft доступен следующий файл:

Свернуть это изображениеРазвернуть это изображение

Синтаксис Xcacls.exe

xcacls имя_файла ] ]

где имя_файла - имя файла или папки, к которой обычно применяется список или элемент управления доступом. Можно использовать любые стандартные подстановочные знаки.
/T Рекурсивно просмотреть текущую и все вложенные папки, назначая указанные права доступа всем файлам и папкам, которые удовлетворяют требованиям.
/E - редактировать список управления доступом (не заменяя его). Например, после выполнения команды XCACLS test.dat /G Administrator:F доступом к файлу Test.dat обладает только учетная запись администратора. Все примененные ранее элементы управления доступом отменяются.
/C - Xcacls.exe продолжает работу даже после получения сообщения «Отказано в доступе». Если параметр /C не указан, появление этого сообщения приводит к остановке программы.
/G - пользователь:разрешение;особ_доступ Предоставить пользователю доступ к определенному файлу или папке.

  • Переменная разрешение служит для назначения указанных прав доступа к файлам и определения особой маски доступа к файлам для папок. Переменная разрешение принимает следующие значения:
    • R - чтение
    • C - изменение (запись)
    • F - полный доступ
    • P - изменение разрешений (особый доступ)
    • O - смена владельца (особый доступ)
    • X - запуск (особый доступ)
    • E - чтение (особый доступ)
    • W - запись (особый доступ)
    • D - удаление (особый доступ)
  • Переменная особ_доступ (особый доступ) используется только с папками; принимает те же значения, что и переменная разрешение, а также следующее особое значение:
    • T - значение не определено - назначить элемент управления доступом для каталога без указания элемента, который используется для создаваемых в этой папке файлов. Должно быть указано хотя бы одно право доступа. Текст между точкой с запятой (;) и параметром Т не учитывается. Примечания.
      • Параметры доступа для файлов (для папок - особого доступа к файлам и папкам) идентичны. Подробное описание этих параметров см. в документации к системе Windows 2000.
      • Прочие параметры (также назначаются в проводнике) представляют собой подмножества всех возможных сочетаний основных прав доступа. По этой причине особые права доступа к папкам (например, LIST или READ) отсутствуют.

/R пользователь Отменить все права доступа для указанного пользователя.
/P пользователь:разрешение;особ_доступ - заменить права доступа для указанного пользователя. Переменные «разрешение» и «особ_доступ» определяются по правилам, описанным для параметра /G. См. раздел этой статьи.
/D пользователь - запретить пользователю доступ к файлу или папке.
/Y - Отменить вывод запроса на подтверждение изменения прав доступа. Программа CACLS выводит такой запрос по умолчанию. По этой причине, если команда CACLS используется в составе пакетного файла, его выполнение прерывается до получения ответа на запрос. Параметр /Y используется для подавления вывода окна запроса в случае использования Xcacls.exe в пакетном режиме.

Использование программы Xcacls.exe для просмотра разрешений

Программу Xcacls.exe также можно использовать для просмотра разрешений для файлов и папок. Например, введите в командной строке xcacls C:\winnt и нажмите клавишу ВВОД. Обычно программа возвращает следующий результат.

C:\WINNT BUILTIN\Users:R BUILTIN\Users:(OI)(CI)(IO)(special access:) GENERIC_READ GENERIC_EXECUTE BUILTIN\Power Users:C BUILTIN\Power Users:(OI)(CI)(IO)C BUILTIN\Administrators:F BUILTIN\Administrators:(OI)(CI)(IO)F NT AUTHORITY\SYSTEM:F NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F BUILTIN\Administrators:F CREATOR OWNER:(OI)(CI)(IO)F

Флаги списка управления доступом имеют следующее значение.

  • IO : Inherit Only (только наследование) - данный элемент управления доступом не применяется к текущему объекту.
  • CI : Container Inherit (наследование контейнерами) - данный элемент управления доступом наследуется контейнерами более низкого уровня.
  • OI : Object Inherit (наследование объектами) - данный элемент управления доступом наследуется файлами более низкого уровня.
  • NP : Non-Propagate (не распространять) - объект более низкого уровня не передает дальше унаследованный элемент управления доступом.

Буква в конце каждой строки означает разрешение. Например:

  • F - полный доступ
  • C - изменение
  • W - запись
Примеры использования Xcacls.exe
Пример 1

Чтобы заменить список ACL для всех файлов и папок в текущей папке без просмотра вложенных папок и вывода запроса на подтверждение, введите в командной строке XCACLS *.* /G administrator:RW /Y и нажмите клавишу ВВОД.

Пример 2

Добавленные в данном примере элементы управления доступом также наследуют элементы управления доступом новых файлов, которые создаются в данной папке. После ввода данной команды пользователь TestUser получает право читать, изменять, запускать и удалять все файлы, которые создаются в данной папке, но имеет разрешение только на чтение и запись для самой папки. Введите в командной строке XCACLS *.* /G TestUser:RWED;RW /E и нажмите клавишу ВВОД.

Пример 3

В данном примере устанавливаются разрешения на чтение и запись в папку без создания наследуемого элемента для новых файлов. По этой причине для пользователя TestUser создаваемым в данной папке файлам не назначается элемент управления доступом. Для существующих файлов создается элемент управления доступом с разрешениями на чтение. Введите в командной строке XCACLS *.* /G TestUser:R;RW /E и нажмите клавишу ВВОД.

Инструкции по назначению разрешений NTFS

Назначая разрешения NTFS, принимайте во внимание следующее.

  • Разрешения NTFS служат для управления доступом к файлам и папкам.
  • Целесообразно устанавливать разрешения для групп, а не отдельных пользователей.
  • Разрешения для файлов имеют преимущество перед разрешениями для папок.
  • Назначением разрешений управляют администраторы и владелец объекта.
  • Изменяя разрешения для папок, помните о программах, которые установлены на сервере. Программы создают собственные папки, для которых устанавливается параметр Переносить наследуемые от родительского объекта разрешения на этот объект . Изменение разрешений в родительской папке может вызвать неполадки в работе программ.

    Предупреждение . Многие папки и файлы получают разрешения через механизм наследования. Следовательно, изменение разрешений для одной папки может повлиять на другие объекты.

В любой системе на базе технологий Windows NT существуют специальные сетевые ресурсы. Имена некоторых ресурсов заканчиваются символом $ , такие сетевые ресурсы через " Сетевое окружение " или при открытии ресурсов сервера с помощью команды " \\<имя сервера> " не будут видны. Однако, если указать полное UNC-имя сетевого ресурса, то можно увидеть данные, размещенные в нем.

Перечислим эти ресурсы:

  • ресурс вида " \\<имя сервера>\admin$ " (например, \\DC1\admin$ ) - предназначен для удаленного администрирования компьютера; путь всегда соответствует местоположению папки, в которой установлена система Windows; к этому ресурсу могут подключаться только члены групп Администраторы , Операторы архива и Операторы сервера ;
  • ресурс вида " \\<имя сервера>\< буква диска>$ " (например, \\DC1\C$ ) - корневая папка указанного диска;. к сетевым ресурсам такого типа на сервере Windows могут подключаться только члены групп Администраторы , Операторы архива и Операторы сервера ; на компьютерах с Windows XP Professional и Windows 2000 Professional к таким ресурсам могут подключаться члены групп Администраторы и Операторы архива ;
  • ресурс " \\<имя сервера>\IРС$ " (например, \\DC1\IP$ ) - используется для удаленного администрирования;
  • ресурс " \\<имя сервера>\NETLOGON " (например, \\DC1\NETLOGON ) - используется только на контроллерах домена, в данной сетевой папке хранятся скрипты (сценарии) для входа пользователей в систему, совместимые с предыдущими версиями операционных систем Microsoft;
  • ресурс " \\<имя сервера>\SYSVOL " - используется только на контроллерах домена, в данной сетевой папке хранится файловая часть групповых политик;
  • ресурс " \\<имя сервера>\PRINT$ " - ресурс, который поддерживает совместно используемые принтеры, в частности, в данной папке хранятся драйверы для совместно используемых принтеров.

Просмотреть полный список ресурсов, предоставляемых данным сервером для совместного использования, можно в оснастке " Общие папки ", в разделе " Общие ресурсы " (рис. 8.35):


Рис. 8.35.

В этом же разделе данной оснастки можно отключать ресурсы от совместного использования в сети, менять сетевые разрешения, создавать новые сетевые ресурсы.

Кроме специальных сетевых ресурсов с символом $ в конце названия ресурса, предоставленных группам с высокими полномочиями, с этим символом можно предоставить доступ к любому другому ресурсу, которые предоставляется в сетевой доступ самим администратором. В этом случае сетевой ресурс также будет скрыт при обычном просмотре сети, но будет доступен при указании полного UNC-имени, причем доступ можно разрешить тем группам пользователей, которым нужен данный ресурс.

Разрешения NTFS

Еще раз подчеркнем, что сетевые разрешения действуют только при доступе к ресурсам через сеть. Если пользователь вошел в систему локально, то теперь управлять доступом можно только с помощью разрешений NTFS. На томе (разделе) с системой FAT пользователь будет иметь полный доступ к информации данного тома.

Разрешения NTFS можно установить, открыв Свойства папки или файла и перейдя на закладку " Безопасность " (Security ). Как видно на рис. 8.36 , набор видов NTFS-разрешений намного богаче, чем набор сетевых разрешений.


Рис. 8.36.

На томе NTFS можно назначать следующие виды разрешений для папок:

  • Полный доступ ;
  • Изменить ;
  • Чтение и выполнение ;
  • Список содержимого папки ;
  • Чтение ;
  • Запись ;
  • Особые разрешения .

Для файлов отсутствует вид " Чтение содержимого папки ".

Если на закладке разрешений нажать кнопку " Дополнительно ", то можно осуществлять более тонкую настройку разрешений.

Разрешения NTFS могут быть явными или унаследованными . По умолчанию все папки или файлы наследуют разрешения того объекта-контейнера (родительского объекта ), в котором они создаются. Использование унаследованных разрешений облегчает работу по управлению доступом. Если администратору нужно изменить права доступа для какой-то папки и всего ее содержимого, то достаточно сделать это для самой папки и изменения будут автоматически действовать на всю иерархию вложенных папок и документов. На рис. 8.36 . видно, что группа " Администраторы " имеет унаследованные разрешения типа " Полный доступ " для папки Folder1 . А на рис. 8.37 . показано, что группа " Пользователи " имеет набор явно назначенных разрешений:


Рис. 8.37.

Изменить унаследованные разрешения нельзя. Если нажать на кнопку " Дополнительно ", то можно отменить наследование разрешений от родительского объекта. при этом система предложит два варианта отмены наследования: либо скопировать прежние унаследованные разрешения в виде явных разрешений, либо удалить их совсем.

Механизм применения разрешений

В пункте 8.1 было сказано, что каждый файл представляет собой набор атрибутов. Атрибут, который содержит информацию об NTFS-разрешения, называется списком управления доступом (ACL, Access Control List ). Структура ACL приведена в табл. 8.4 . Каждая запись в ACL называется элементом управления доступом (ACE, Access Control Entry ).

В таблице перечислены идентификаторы безопасности учетных записей пользователей, групп или компьютеров (SID) и соответствующие разрешения для них. На рисунках 8.36 или 8.37 вместо SID-ов показаны имена занесенных в ACL пользователей и групп. В разделе 4 говорилось, что при входе пользователя в сеть (при его регистрации в домене) в текущую сессию пользователя на компьютере контроллер домена пересылает маркер доступа, содержащий SID-ы самого пользователя и групп, членом которых он является. Когда пользователь пытается выполнить какое-либо действие с папкой или файлом (и при этом запрашивает определенный вид доступа к объекту), система сопоставляет идентификаторы безопасности в маркере доступа пользователя и идентификаторы безопасности, содержащиеся в ACL объекта. При совпадении тех или иных SID-ов пользователю предоставляются соответствующие разрешения на доступ к папке или файлу.

Заметим, что когда администратор изменяет членство пользователя в группах (включает пользователя в новую группу или удаляет из какой-либо группы), то маркер доступа пользователя при этом автоматически НЕ изменяется. Для получения нового маркера доступа пользователь должен выйти из системы и снова войти в нее. Тогда он получит от контроллера домена новый маркер доступа, отражающий смену членства пользователя в группах

Порядок применения разрешений

Принцип применения NTFS-разрешений на доступ к файлу или папке тот же, что и для сетевых разрешений:

  • сначала проверяются запреты на какие-либо виды доступа (если есть запреты, то данный вид доступа не разрешается);
  • затем проверяется набор разрешений (если есть разные виды разрешений для какого-либо пользователя и групп, в которые входит данный пользователь, то применяется суммарный набор разрешений).

Но для разрешений NTFS схема немного усложняется. Разрешения применяются в следующем порядке:

  • явные запреты;
  • явные разрешения;
  • унаследованные запреты;
  • унаследованные разрешения.

Если SID пользователя или SID-ы групп, членом которых является данный пользователь, не указаны ни в явных, ни в унаследованных разрешениях, то доступ пользователю будет запрещен.

Владение папкой или файлом

Пользователь, создавший папку или файл, является Владельцем данного объекта. Владелец объекта обладает правами изменения NTFS-разрешений для этого объекта, даже если ему запрещены другие виды доступа. Текущего владельца объекта можно увидеть, открыв Свойства объекта, затем закладку " Безопасность ", затем нажав кнопку " Дополнительно " и перейдя на закладку " Владелец " (рис. 8.38):


Рис. 8.38.

Внимание ! Администратор системы может сменить владельца объекта, выбрав нового владельца из предлагаемого в данном окне списка или из полного списка пользователей (нажав кнопку " Иные пользователи или группы "). Эта возможность предоставлена администраторам для того, чтобы восстановить доступ к объекту в случае утери доступа по причине неправильно назначенных разрешений или удаления учетной записи, имевшей исключительный доступ к данному объекту (например, уволился единственный сотрудник, имевший доступ к файлу, администратор удалил его учетную запись, вследствие этого был полностью потерян доступ к файлу, восстановить доступ можно единственным способом - передача владения файла администратору или новому сотруднику, исполняющему обязанности уволившего сотрудника).

Совместное использование сетевых разрешений и разрешений NTFS

При доступе по сети к файловым ресурсам, размещенным на томе NTFS, к пользователю применяется комбинация сетевых разрешений и разрешений NTFS.

При доступе через сеть сначала вычисляются сетевые разрешения (путем суммирования разрешений для пользователя и групп, в которые входит пользователь). Затем также путем суммирования вычисляются разрешения NTFS. Итоговые действующие разрешения, предоставляемые к данному конкретному объекту, будут представлять собой минимум из вычисленных сетевых и NTFS-разрешений.

Управление доступом с помощью групп

Группы пользователей созданы специально для того, чтобы более эффективно управлять доступом к ресурсам. Если назначать права доступа к каждому ресурсу для каждого отдельного пользователя, то, во-первых, это очень трудоемкая работа, и во-вторых, затрудняется отслеживание изменений в правах доступа при смене каким-либо пользователем своей должности в подразделении или переходе в другое подразделение.

Повторим материал из раздела 4. Для более эффективного управления доступом рекомендуется следующая схема организации предоставления доступа:

  1. учетные записи пользователей (accounts ) включаются в глобальные доменные группы (global groups ) в соответствии со штатной структурой компании/организации и выполняемыми обязанностями;
  2. глобальные группы включаются в доменные локальные группы или локальные группы на каком-либо сервере (domain local groups , local groups ) в соответствии с требуемыми правами доступа для того или иного ресурса;
  3. соответствующим локальным группам назначаются необходимые разрешения (permissions ) к конкретным ресурсам.

Данная схема по первым буквам используемых объектов получила сокращенное название AGLP (A ccounts G lobal groups L ocal groups P ermissions). При такой схеме, если пользователь повышается или понижается в должности или переходит в другое подразделение, то нет необходимости просматривать все сетевые ресурсы , доступ к которым необходимо изменить для данного пользователя. Достаточно изменить соответствующим образом членство пользователя в глобальных группах , и права доступа к сетевым ресурсам для данного пользователя изменятся автоматически .

Добавим, что в основном режиме функционирования домена Active Directory (режимы " Windows 2000 основной " или " Windows 2003 ") с появлением вложенности групп и универсальных групп схема AGLP модифицируется в схему AGG…GULL…LP .

Для управления доступом пользователей к папкам и файлам используется детализированная и сложная система разрешений. Механизм управления доступом к объектам Windows — один из самых детализированных среди известных операционных систем. Для файлов и папок существует не менее 14 разрешений NTFS, которые могут быть включены или блокированы — и проверены. Эти разрешения можно назначать файлам или папкам и пользователям или группам. Кроме того, можно назначать порядок наследования разрешений для файлов или папок и пользователей или групп. В лабиринте разрешений легко заблудиться. В данной статье речь пойдет о том, как действуют разрешения для папок и файлов, и о наиболее эффективных способах их применения.

Основы доступа к объектам

Пользователь никогда не входит в непосредственное “соприкосновение” с каким-либо объектом Windows. Весь доступ к объектам осуществляется через программы (например, Windows Explorer, Microsoft Office) или процессы. Программа, которая обращается к ресурсам от лица пользователя, выполняет процедуру, которая называется имперсонализацией (impersonation). Программа, которая обращается к удаленному ресурсу, выполняет процедуру, которая называется делегированием (delegation).

После регистрации пользователя его системный идентификатор (System Identifier — SID) и идентификаторы SID группы обрабатываются процессом lsass.exe, который генерирует маркер безопасного доступа пользователя. В маркер безопасного доступа вводится и другая информация, в том числе о назначенных пользователю правах (разрешениях), ID сеанса пользователя (уникален для каждого сеанса), маске разрешений с детальным описанием типа запрошенного доступа. Права, назначенные пользователю, можно увидеть с помощью команды

Если программа обращается от лица пользователя к защищенному ресурсу, то монитор защиты (security reference monitor) Windows запрашивает у программы маркер безопасного доступа пользователя. Затем монитор защиты анализирует маркер, чтобы определить эффективные разрешения пользователя, и разрешает или запрещает выполнение запрошенной пользователем операции. Эффективные разрешения более подробно описаны ниже.

Разрешения Share

Каждый защищенный объект Windows — в том числе файлы, папки, общие ресурсы, принтеры и разделы реестра — поддерживает разрешения безопасности. Любую папку Windows можно сделать общедоступной, чтобы разрешить дистанционный доступ. Разрешения Share можно назначать любым объектам folder и printer в Windows, но разрешения применяются, только если обращение к объекту происходит через сетевой ресурс. К разрешениям Folder Share относятся Full Control, Change и Read.

Субъекты безопасности, которым присвоено право полного доступа (Full Control) к объекту, могут производить с объектом почти любые операции. Они могут удалить, переименовать, копировать, переместить и изменить объект. Пользователь с правом Full Control может изменить разрешения Share объекта и стать владельцем объекта (если он уже не является владельцем и не имеет разрешения Take Ownership). Таким образом, любой пользователь с разрешением Full Control может отменить разрешения других лиц, в том числе администратора (хотя администратор может всегда вернуть себе владение и разрешения). Возможность изменять разрешения — обязательное требование любой операционной системы с избирательным управлением доступом (discretionary access control — DAC), такой как Windows.

В большинстве случаев, основное разрешение доступа к ресурсу, необходимое обычным пользователям – Change. С помощью разрешения Change пользователь может добавлять, удалять, изменять и переименовывать любые ресурсы в соответствующей папке. Разрешение Read обеспечивает просмотр, копирование, переименование и печать объекта. Пользователь с разрешением Read может копировать объект в другое место, в котором имеет право Full Control.

Разрешения NTFS

Если в Windows используется файловая система NTFS (а не FAT), то все файлы, папки, разделы реестра и многие другие объекты имеют разрешения NTFS. Разрешения NTFS применяются как при локальном, так и при дистанционном доступе к объекту. Для просмотра и изменения разрешений NTFS файла или папки достаточно щелкнуть правой кнопкой мыши на объекте, выбрать пункт Properties и перейти к вкладке Security.

В Таблице 1 показаны 7 суммарных разрешений NTFS. Суммарные разрешения представляют собой различные комбинации 14 более детализированных разрешений, показанных в Таблице 2. Просмотреть детализированные разрешения можно, открыв диалоговое окно Advanced Security Settings для объекта щелчком на кнопке Advanced во вкладке Security, а затем щелкнуть на кнопке Edit во вкладке Permissions. Знакомиться с детализированными разрешениями объекта (особенно требующего повышенной безопасности) — полезная привычка, хотя для этого требуется больше усилий. Суммарные разрешения не всегда точно отражают состояние детализированных разрешений. Например, мне приходилось видеть суммарное разрешение Read, хотя в действительности пользователь имел разрешение Read & Execute.

Аналогично разрешению Full Control Share, разрешение Full Control NTFS предоставляет владельцам большие возможности. Пользователи, не являющиеся администраторами, часто имеют разрешение Full Control в своем домашнем каталоге и других файлах и папках. Как уже отмечалось, обладатель прав такого уровня может изменять разрешения файла и назначить себя владельцем. Вместо того чтобы предоставлять пользователям разрешение Full Control, можно дать им лишь право Modify. Если пользователь — владелец файла, то при необходимости можно вручную запретить ему изменять разрешения.

Технически, разрешения NTFS известны как избирательные списки управления доступом (discretionary ACL — DACL). Разрешения аудита известны как системные ACL (SACL). Большинство защищенных объектов NTFS располагают разрешениями обоих видов.

Влияние доверительных отношений Windows

По умолчанию все домены и леса Windows 2000 и более поздних версий имеют двусторонние доверительные отношения со всеми другими доменами леса. Если домен доверяет другому домену, то все пользователи в доверенном домене имеют те же разрешения безопасности в доверяющем домене, что и группа Everyone и группа Authenticated Users доверяющего домена. В любом домене многие разрешения этим группам назначаются по умолчанию, и доверительные отношения неявно обеспечивают широкие права, которые не были бы предоставлены в ином случае. Следует помнить, что если доверительные отношения не носят выборочного характера, то любые разрешения, предоставляемые группам Everyone и Authenticated Users, назначаются и всем другим пользователям в лесу.

Проверка разрешений из командной строки

Администраторы часто используют такие инструменты командной строки, как subinacl.exe, xacls.exe и cacls.exe для проверки разрешений NTFS. Subinacl входит в набор ресурсов Windows Server 2003 Resource Kit Tools. С помощью Subinacl можно просматривать и изменять разрешения NTFS для файлов, папок, объектов, разделов реестра и служб. Самая важная возможность Subinacl — скопировать разрешения пользователя, группы или объекта и применить их к другому пользователю, группе или объекту в том же или другом домене. Например, при перемещении пользователя из одного домена в другой в Windows создается новая учетная запись user; все ранее существовавшие SID или разрешения, связанные с первоначальным пользователем, отменяются. Скопировав разрешения в новую учетную запись user с помощью Subinacl, можно сделать их идентичными. Xcacls функционирует аналогично Subinacl и входит в состав комплекта ресурсов Windows 2000 Server Resource Kit.

Программа Cacls описана в опубликованной компанией Microsoft статье “Undocumented CACLS: Group Permissions Capabilities”. Это более старый инструмент, который появился в составе Windows со времени Windows NT. Cacls не столь полезна, как Subinacl или Xacls, но утилита всегда имеется в системе Windows. С помощью Cacls можно просматривать и изменять файлы и разрешения по пользователям и группам, но не создавать детализированные разрешения NTFS. В настоящее время возможности Cacls ограничены работой с разрешениями No Access, Read, Change и Full Control, которые соответствуют разрешениям NTFS, но не разрешением Share. Кроме того, разрешение Read программы Cacls соответствует разрешению Read & Execute системы NTFS.

Наследование

По умолчанию все файлы, папки и разделы реестра наследуют разрешения от родительского контейнера. Наследование можно активизировать или отключить для индивидуальных файлов, папок или разделов реестра и для отдельных пользователей или групп. Как мы видим на Экране 1, поле Apply To на вкладке Permissions диалогового окна Advanced Security Settings показывает, ограничено ли действие конкретного разрешения текущим контейнером, или оно распространяется на подпапки и файлы. Администратор может назначить разрешение (для отдельных пользователей), которые наследуются или нет. В данном примере группа Everyone имеет разрешение Read & Execute в текущей папке, и это разрешение не наследуется.

Если файл или папка наследует большинство своих разрешений, но имеет также и набор явно заданных разрешений, то последние всегда имеют приоритет перед унаследованными правами. Например, можно предоставить пользователю разрешение Full Control-Deny в корневом каталоге конкретного тома, и задать наследование этих разрешений всеми файлами и папками диска. Затем можно назначить любому файлу или папке на диске право доступа, которое отменяет унаследованный режим Full Control-Deny.

Эффективные разрешения

Монитор защиты Windows определяет эффективные разрешения пользователей (реальные разрешения, которыми они располагают на практике) с учетом нескольких факторов. Как отмечалось выше, монитор защиты сначала собирает информацию об индивидуальной учетной записи пользователя и всех группах, к которым он принадлежит, и обобщает все разрешения, назначенные всем пользовательским и групповым SID. Если разрешения Deny и Allow существуют на одном уровне, то, как правило, приоритет имеет Deny. Если приоритет получает Full Control-Deny, то пользователь, как правило, не имеет доступа к объекту.

По умолчанию при учете разрешений NTFS и Share (пользователь подключается к ресурсу через сеть) монитор защиты должен собрать все разрешения Share и NTFS. В результате эффективные разрешения пользователя представляют собой набор разрешений, предоставленных как разрешениями Share, так и NTFS.

Например, в конечном итоге у пользователя могут оказаться Share-разрешения Read и Change, и NTFS-разрешения Read и Modify. Эффективные разрешения — самый ограниченный набор разрешений. В данном случае разрешения почти идентичны. Эффективными разрешениями будут Read и Change/Modify. Многие администраторы ошибочно полагают, что эффективные разрешения — только Read, из-за плохих, чрезмерно упрощенных примеров или устаревшей документации.

В диалоговом окне Advanced Security Settings в Windows XP и более новых версиях появилась вкладка Effective Permissions (см. Экран 2). К сожалению, на вкладке Effective Permissions отражаются только разрешения NTFS. Не учитывается влияние разрешений Share, групп на базе действий, членства в которых пользователь не имеет, и других факторов, таких как файловая система с шифрованием (Encrypting File System — EFS). Если EFS активизирована для файла или папки, то пользователь с соответствующими разрешениями NTFS и Share может лишиться возможности доступа к объекту, если не имеет права доступа EFS к папке или файлу.

  • Осмотрительно предоставлять разрешения Full Control обычным пользователям. Полезно назначить им вместо этого разрешение Modify. В большинстве случаев такой подход обеспечивает пользователям все необходимые разрешения, не позволяя изменять права или присваивать себе владение.
  • Аккуратно работайте с группой Everyone; лучше использовать группу Authenticated Users (или Users), или специальную группу с ограниченными правами. Важные упущения группы Authenticated Users — отсутствие Guest и неаутентифицированного пользователя.
  • Нередко сетевых администраторов просят ввести гостевые учетные записи для сторонних пользователей (например, консультантов, подрядчиков, внештатных программистов). Но права обычного пользователя часто избыточны для гостя. Следует сформировать и использовать группу, права которой по умолчанию сильно урезаны (например, разрешение Full Control-Deny для корневых каталогов), а затем явно разрешить доступ только к файлам и папкам, необходимым данной гостевой учетной записи. Явно назначаемые разрешения предпочтительны, поскольку предоставляют гостевым пользователям именно те разрешения, которые необходимы для их работы, но не больше.
  • Следует проявлять осторожность, налагая запреты на группы Everyone и Users, так как администраторы входят и в эти группы.
  • В случае доверительных отношений с другими доменами полезно применять одностороннее и селективное доверие, чтобы ограничить права пользователей доверенного домена.
  • Необходимо периодически осуществлять аудит разрешений NTFS и Share, чтобы убедиться в том, что они максимально ограничены.

Используя эти рекомендации и справочные таблицы с кратким описанием всех разрешений, можно смело отправляться в лабиринт файловой системы. Администратор сможет уверенно назначать разрешения для файлов, папок, пользователей и групп.

Таблица 1. Сводка разрешений NTFS

Разрешение

Действие

Обеспечивает просмотр, копирование, печать и переименование файлов, папок и объектов. Не позволяет запускать выполняемые программы, кроме файлов сценариев. Позволяет считывать разрешения объектов, атрибуты объектов и расширенные атрибуты (например, бит Archive, EFS). Позволяет составить список файлов и подпапок папки

Разрешения чтения, плюс создание и перезапись файлов и папок

List (Folders Only)

Позволяет просматривать имена файлов и подпапок внутри папки

Чтение разрешений и запуск программных файлов

Предоставляет все разрешения, кроме возможности присвоить владение и назначать разрешения. Позволяет читать, удалять, изменять и перезаписывать файлы и папки

Обеспечивает полное управление папками и файлами, в том числе позволяет назначать разрешения

Special Permissions

Позволяет составлять комбинации из 14 более детальных разрешений, которые не входят ни в одно из остальных 6 суммарных разрешений. К этой группе относится разрешение Synchronize

Таблица 2. Детальные разрешения NTFS

Разрешение

Действие

Traverse Folder / Execute File

Traverse Folder позволяет перемещаться по папкам для доступа к другим файлам и папкам, даже если субъект безопасности не имеет разрешений в транзитной папке. Применяется только к папкам. Traverse Folder вступает в силу, только если субъект безопасности не имеет разрешения Bypass traverse checking user (предоставляется группе Everyone по умолчанию). Execute File позволяет запускать программные файлы. Назначение разрешения Traverse Folder для папки не устанавливает автоматически разрешения Execute File для всех файлов в папке

List Folder / Read Data

Обеспечивает просмотр имен файлов и подпапок в папке. List Folder воздействует только на содержимое папки — оно не влияет на то, будет ли внесена в список папка, для которой назначается разрешение. Read Data позволяет просматривать, копировать и печатать файлы

Субъект безопасности видит атрибуты объекта (например, Read-only, System, Hidden)

Read Extended Attributes

Субъект безопасности видит расширенные атрибуты объекта (например, EFS, Compression)

Create Files / Write Data

Create Files позволяет создавать файлы внутри папки (применяется только к папкам). Write Data позволяет вносить изменения в файл и перезаписывать существующий контент (применяется только к файлам)

Create Folders / Append Data

Create Folders позволяет создавать папки внутри папки (применяется только к папкам). Append Data позволяет вносить изменения в конец файла, но не изменять, удалять или перезаписывать существующие данные (применяется только к файлам)

Write Attributes

Определяет, может ли субъект безопасности записывать или изменять стандартные атрибуты (например, Read-only, System, Hidden) файлов и папок. Не влияет на содержимое файлов и папок, только на их атрибуты.

Write Extended Attributes

Определяет, может ли субъект безопасности записывать или изменять расширенные атрибуты (например, EFS, Compression) файлов и папок. Не влияет на содержимое файлов и папок, только на их атрибуты

Delete Subfolders and Files

Позволяет удалять подпапки и файлы, даже если разрешение Delete не предоставлено подпапке или файлу

Позволяет удалять папку или файл. При отсутствии разрешения Delete для файла или папки ее можно удалить, если имеется разрешение Delete Subfolders and Files в родительской папке

Read Permissions

Change Permissions

Позволяет изменять разрешения (например, Full Control, Read, Write) файла или папки. Не позволяет изменять сам файл

Определяет, кто может быть владельцем файла или папки. Владельцы всегда могут иметь Full Control, и их разрешения в файле или папке не могут быть постоянно отменены, если при этом не отменяется и право владения

Администраторы редко используют это разрешение. Применяется для синхронизации в многопотоковых, многопроцессных программах и определяет взаимодействие между несколькими потоками, которые обращаются к одному ресурсу

Для чего в большинстве случаев в организации нужен сервер? Active Directory, RDS, сервер печати и еще куча мелких и крупных сервисов. Самая заметная всем роль, пожалуй, это файловый сервер. С ним люди, в отличие, от других ролей работают осознаннее всего. Они запоминают в какой папке что лежит, где находятся сканы документов, где их отчеты, где факсы, где общая папка, в которой можно все, куда доступ только одному из отделов, куда другому, а о некоторых они вообще не догадываются

О доступе к сетевым и локальным папкам на сервере я и хочу поговорить.

Доступ к общим ресурсам на сервере осуществляется, как все прекрасно знают, по протоколу SMB уже 3.0. Доступ по сети к папкам можно ограничивать SMB и NTFS-разрешениями. SMB-разрешения работают только при доступе к общей папке по сети и не имеют никакого влияния на доступность той или иной папки локально. NTFS-разрешения работают, как по сети, так и локально, обеспечивая намного больше гибкости в создании прав доступа. SMB и NTFS разрешения работают не отдельно, а дополняют друг друга, по принципу наибольшего ограничения прав.

Для того, чтобы отдать папку в общий доступ в Server 2012 в группе SMB Share Cmdlets , появился командлет New-SMBShare. На примере этого командлета мы увидим все возможности, доступные при создании общей папки, кроме кластерных конфигураций (это отдельная большая тема).

Создание новой общей папки выглядит очень просто:
net share homefolder=s:\ivanivanov /grant:"admin",full /grant:"folderowner",change /grant:"manager",read /cache:programs /remark:"Ivanov" или
new-smbshare homefolder s:\ivanivanov –cachingmode programs –fullaccess admin –changeaccess folderowner –readaccess manager –noaccess all –folderenumerationmode accessbased -description "Ivanov"

Разбираемся:

-name имя общей папки в сети, может отличаться от имени папки на локальном компьютере. Имеет ограничение в 80 символов, нельзя использовать имена pipe и mailslot.

Path путь к локальной папке, которую нужно отдать в общий доступ. Путь должен быть полным, от корня диска.

Cachingmode настройка автономности файлов в общей папке.

Что такое автономный файл?

Автономный файл – это копия файла, находящегося на сервере. Эта копия находится на локальном компьютере и позволяет работать с файлом без подключения к серверу. При подключении изменения синхронизируются. Синхронизируются в обе стороны: если вы сделали изменения в своем автономном файле – при следующем подключении файл на сервере будет изменен; если кто-то сделал изменения на сервере – то ваша локальная копия будет изменена. Если изменения произошли в обоих файлах сразу – получаем ошибку синхронизации и придется выбирать, какую версию сохранить. Для совместной работы использовать эту возможность я бы не стал, но если для каждого пользователя наделать шар и ограничить доступ для других чтением, без возможности записи получаем следующие плюшки:

  • Работа не зависит от сети – может сгореть свитч, может перезагружаться сервер, может оборваться провод или выключиться точка доступа – пользователь работает со своей копией, не замечая, что у вас там какая-то авария, при восстановлении сетевого подключения его работа уходит на сервер.
  • Пользователь может работать работу где угодно: на даче, в автобусе, в самолете – в тех местах, где подключение к VPN по каким-то причинам недоступно.
  • Если даже пользователь работает через VPN, но подключение или очень медленное, или постоянно обрывается – проще работать с автономной копией и синхронизировать изменения, чем пытаться что-то сделать на сервере.
  • Пользователь сам может выбирать что и когда синхронизировать, если дать ему такую возможность.

Принимает следующие значения:
  • none – файлы недоступны автономно, для доступа к файлам нужен доступ к серверу
  • manual – пользователи сами выбирают файлы, которые будут доступны автономно
  • programs – все в папке доступно автономно (документы и программы (файлы с расширением *.exe, *.dll))
  • documents – документы доступны, программы нет
  • branchcache – кэширование вместо локального компьютера пользователя происходит на серверах BranchCache, пользователи сами выбирают автономные файлы
-noaccess, -readaccess, -changeaccess, -fullaccess разрешения общего доступа (share permissions).

У этих разрешений есть одно большое преимущество – они очень простые.

Noaccess secretary,steward – секретарше и завхозу нечего делать в общих папках бухгалтерии
-readaccess auditor – аудитор, проверяющий работу бухгалтерии может видеть имена файлов и подпапок в общей папке, открывать файлы для чтения, запускать программы.
-changeaccess accountant – бухгалтеры в своей общей папке могут создавать файлы и подпапки, изменять существующие файлы, удалять файлы и подпапки
-fullaccess admin – fullaccess это readaccess+changeaccess плюс возможность изменять разрешения.

При создании общей папки автоматически применяется наиболее ограничивающее правило – группе «Все» дается право на чтение.

Эти разрешения применяются только для пользователей, получивших доступ к общей папке по сети. При локальном входе в систему, например в случае терминального сервера, и секретарша и завхоз увидят в бухгалтерии все, что пожелают. Это исправляется NTFS-разрешениями. SMB-разрешения применяются ко всем файлам и папкам на общем ресурсе. Более тонкая настройка прав доступа осуществляется также NTFS-разрешениями.

Concurrentuserlimit c помощью этого параметра можно ограничить максимальное число подключений к папке общего доступа. В принципе, также можно использовать для ограничения доступа к папке, дополняя NTFS-разрешения, только надо быть точно уверенным в необходимом количестве подключений.

Description описание общего ресурса, которое видно в сетевом окружении. Описание – это очень хорошая вещь, которой многие пренебрегают.

Encryptdata шифрование

В SMB до версии 3.0 единственным способом защитить трафик от файлового сервера клиенту был VPN. Как его реализовать зависело полностью от предпочтений системного администратора: SSL, PPTP, IPSEC-туннели или еще что-нибудь. В Server 2012 шифрование работает из коробки, в обычной локальной сети или через недоверенные сети, не требуя никаких специальных инфраструктурных решений. Его можно включить как для всего сервера, так и для отдельных общих папок. Алгоритмом шифрования в SMB 3.0 является AES-CCM , алгоритмом хеширования вместо HMAC-SHA256 стал AES-CMAC . Хорошая новость в том, что SMB 3.0 поддерживает аппаратный AES (AES-NI), плохая новость в том, что Россия не поддерживает AES-NI.

Чем грозит включение шифрования? Тем, что работать с зашифрованными общими папками смогут только клиенты, поддерживающие SMB 3.0, то есть Windows 8. Причина опять же, максимально допустимое ограничение прав пользователей. Предполагается, что администратор знает, что он делает и при необходимости даст доступ для клиентов с другой версией SMB. Но так как SMB 3.0 использует новые алгоритмы шифрования и хеширования трафик клиентов с другой версией SMB шифроваться не будет, нужен VPN. Пустить всех клиентов на файловый сервер с включенным шифрованием поможет команда set-smbserverconfiguration –rejectunencryptedaccess $false
В конфигурации по умолчанию (запрещен нешифрованный трафик к зашифрованным общим папкам), при попытке доступа к папке клиента с версией SMB ниже 3.0 на клиенте мы получим «Ошибку доступа». На сервере в журнал Microsoft-Windows-SmbServer/Operational будет добавлено событие 1003, в котором можно будет найти IP-адрес клиента, пытавшегося получить доступ.

Шифрование SMB и EFS – это разные вещи, никак не связанные друг с другом, то есть его можно применять на FAT и ReFS томах.

Folderenumerationmode Это Access-Based Enumeration. С включенным Access-Based Enumeration пользователи, не имеющие доступа к общей папке, просто не увидят ее на файловом сервере и будет меньше вопросов, почему у меня нет доступа к той или этой папке. Пользователь видит свои доступные папки и не пытается лезть в чужие дела. По умолчанию – выключено.

  • accessbased – включить
  • unrestricted – выключить
-temporary Этот ключ создает временную общую папку, доступ к которой будет прекращен после перезагрузки сервера. По умолчанию создаются постоянные общие папки.

NTFS-разрешения

С помощью NTFS-разрешений мы можем более детально разграничить права в папке. Можем запретить определенной группе изменять определенный файл, оставив возможность редактирования всего основного; в одной и той же папке одна группа пользователей может иметь права изменения одного файла и не сможет просматривать другие файлы, редактируемые другой группой пользователей и наоборот. Короче говоря, NTFS-разрешения позволяют нам создать очень гибкую систему доступа, главное самому потом в ней не запутаться. К тому же NTFS-разрешения работают, как при доступе к папке по сети, дополняя разрешения общего доступа, так и при локальном доступе к файлам и папкам.

Существует шесть основных (basic) разрешений, которые являются комбинацией из 14 дополнительных (advanced) разрешений.

Основные разрешения
Полный доступ (fullcontrol) – полный доступ к папке или файлу, с возможностью изменять права доступа и правила аудита к папкам и файлам

Изменение (modify) – право чтения, изменения, просмотра содержимого папки, удаления папок/файлов и запуска выполняемых файлов. Включает в себя Чтение и выполнение (readandexecute), Запись (write) и Удаление (delete).

Чтение и выполнение (readandexecute) – право открывать папки и файлы для чтения, без возможности записи. Также возможен запуск выполняемых файлов.

Список содержимого папки (listdirectory) – право просматривать содержимое папки

Чтение (read) – право открывать папки и файлы для чтения, без возможности записи. Включает в себя Содержание папки / Чтение данных (readdata), Чтение атрибутов (readattributes), Чтение дополнительных атрибутов (readextendedattributes) и Чтение разрешений (readpermissions)

Запись (write) – право создавать папки и файлы, модифицировать файлы. Включает в себя Создание файлов / Запись данных (writedata), Создание папок / Дозапись данных (appenddata), Запись атрибутов (writeattributes) и Запись дополнительных атрибутов (writeextendedattributes)

Дополнительные разрешения
Я ставил на папку только 1 из 14 разрешений и смотрел, что получается. В реальном мире, в большинстве случаев хватает основных разрешений, но мне было интересно поведение папок и файлов с максимально урезанными правами.

Траверс папок / выполнение файлов (traverse) – право запускать и читать файлы, независимо от прав доступа к папке. Доступа к папке у пользователя не будет, (что находится в папке останется загадкой) но файлы в папке будут доступны по прямой ссылке (полный, относительный или UNC-путь). Можно поставить на папку Траверс папок, а на файл любые другие разрешения, которые нужны пользователю для работы. Создавать и удалять файлы в папке у пользователя не получится.

Чтение атрибутов (readattributes) – право просматривать атрибуты (FileAttributes) папки или файла.
Просматривать содержимое папки или файлов или изменить какие-либо атрибуты нельзя.

Чтение дополнительных атрибутов (readextendedattributes) – право просматривать дополнительные атрибуты папки или файла.

Единственное, что я смог найти по дополнительным атрибутам – это то, что они используются для обеспечения обратной совместимости с приложениями OS/2. (Windows Internals, Part 2: Covering Windows Server 2008 R2 and Windows 7). Больше мне о них ничего не известно.

Создание файлов / запись данных (writedata) – дает пользователю возможность создавать файлы в папке, в которую у него нет доступа. Можно копировать файлы в папку и создавать в папке новые файлы. Нельзя просматривать содержимое папки, создавать новые папки и изменять уже существующие файлы. Пользователь не сможет изменить какой-либо файл, даже если он является владельцем этого файла – только создавать.

Создание папок / дозапись данных (appenddata) – дает пользователю возможность создавать подпапки в папке и добавлять данные в конец файла, не изменяя существующее содержание.

Проверка

C созданием подпапок все понятно: ni c:\testperms\testappend –itemtype directory отработает, как ожидается - создаст в недоступной для просмотра пользователем папке testperms подпапку testappend. Попробуем добавить строку в конец файла – сэмулируем ведение какого-нибудь лога. newevent >> c:\testperms\user.log Отказано в доступе.
Хм… В CMD не работает. А если так. ac c:\testperms\user.log newevent ac: Отказано в доступе по пути "C:\testperms\user.log".
А по конвейеру? "newevent" | out-file c:\testperms\user.log -append out-file: Отказано в доступе по пути "C:\testperms\user.log".
И так не работает.

Начинаем сеанс черной магии: используем класс File, метод AppendText . Получаем объект лога.
$log = ::appendtext("c:\testperms\user.log") Исключение при вызове "AppendText" с "1" аргументами: "Отказано в доступе по пути "c:\testperms\user.log"."
Думаю, что AppendAllText пробовать уже не стоит
$log = ::appendalltext("c:\testperms\user.log","newevent") Исключение при вызове "AppendAllText" с "2" аргументами: "Отказано в доступе по пути "c:\testperms\user.log"."
Дело, в принципе, ясное. Только права на дозапись данных в файл вышеперечисленным способам не хватает, им нужна запись в файл. Но вместе с этим мы дадим возможность на изменение файла, а не только добавление записей, то есть открываем потенциальную возможность уничтожить все содержимое файла.

Нам нужно пересмотреть концепцию: давайте будем не получать объект лога, а создадим новый, в котором зададим все интересующие нас параметры. Нам нужно что-то где мы можем явно указать права доступа. Нам нужен FileStream , а конкретнее нам поможет FileStream Constructor (String, FileMode, FileSystemRights, FileShare, Int32, FileOptions) . Нужны следующие параметры:

  • Путь к файлу – понятно
  • Как открывать файл – открыть файл и найти конец файла
  • Права доступа к файлу – дозапись данных
  • Доступ для других объектов FileStream – не нужен
  • Размер буфера – по умолчанию 8 байт
  • Дополнительные опции - нет
Получается примерно так:
$log = new-object io.filestream("c:\testperms\user.log",::append,::appenddata,::none,8,::none)
Работает! Объект лога мы создали, попробуем туда что-нибудь записать . Метод FileStream.Write принимает входящие значения в байтах. Перегоняем событие, которое мы хотим записать, в байты – класс Encoding , метод GetEncoding (нам не нужны кракозябры на выходе) и GetBytes (собственно, конвертирование)
$event = "Произошло новое событие." $eventbytes = ::getencoding("windows-1251").getbytes($event)
Параметры FileStream.Write:
Что писать; откуда начинать писать; количество байт, которые нужно записать
Записываем:
$log.write($eventbytes,0,$eventbytes.count)
Проверяем.
gc c:\testperms\user.log gc: Отказано в доступе по пути "C:\testperms\user.log ".
Все нормально, у пользователя нет прав на просмотр написанного. Перелогиниваемся под администратором.
gc c:\testperms\user.log Произошло новое событие.
Все работает.

Папке, в которой находится файл кроме разрешения Создание папок / дозапись данных должно быть еще выдано разрешение Содержание папки / Чтение данных. На файл хватает только Создание папок / дозапись данных с отключенным наследованием. Полностью оградить пользователя (а пользователем может быть и злоумышленник) от файлов, в которые он должен что-то писать не получится, но с другой стороны, кроме списка файлов в папке, пользователь ничего не увидит и не сможет сделать.

Вывод из этого простой: в батниках реализовать безопасное логирование чего-либо не получится, PowerShell спасает умение работать c .NET объектами.


Запись атрибутов (writeattributes) – разрешаем пользователю изменять атрибуты файла или папки. Вроде все просто. Но вот только что ответить на вопрос: «Фотографии моих котиков занимают почти все место в моем профиле и у меня не остается места для деловой переписки. Я бы хотел сжать папку с котиками, но у меня требуют прав администратора. Вы же говорили, что у меня есть право менять атрибуты папок. Это же атрибут? Почему я не могу его поменять?»

Да, пользователю с правом записи атрибутов можно менять почти все видимые атрибуты файлов и папок, кроме атрибутов сжатия и шифрования. Технически, пользователю дается право выполнять функцию SetFileAttributes . А сжатие файлов выполняется функцией DeviceIOControl , которой нужно передать параметр FSCTL_SET_COMPRESSION и сжатие файлов является далеко не единственной ее работой. С помощью этой функции мы можем управлять всеми устройствами и их ресурсами в системе и, наверное, дать пользователю это право на выполнение этой функции означает сделать его администратором.

С шифрованием история похожа: функция EncryptFile , которая как раз и отвечает за шифрование, требует, чтобы у пользователя были права Содержание папки / Чтение данных, Создание файлов / Запись данных, Чтение атрибутов, Запись атрибутов и Синхронизация на объект. Без них ничего не получится.

Запись расширенных атрибутов (writextendedattributes) . Ну это тех, которые используются для обратной совместимости с приложениями OS/2, ага. Ну, а еще в расширенные атрибуты файла C:\Windows\system32\services.exe с недавних пор начали записывать троянов (ZeroAccess.C). Может быть стоит их отключать на самом верхнем уровне? На этот вопрос я не могу дать ответ, теоретически – может быть и стоит, практически в продакшене – я не пробовал.

Удаление подпапок и файлов. (deletesubdirectoriesandfiles) Интересное разрешение, применяемое только к папкам. Суть в том, чтобы разрешить пользователю удалять подпапки и файлы в родительской папке, не давая разрешения Удаление.

Допустим, есть каталог товаров, в который пользователи заносят данные. Есть родительская папка Catalog, внутри подпапки по алфавиту, от A до Z, внутри них какие-нибудь наименования. Наименования меняются каждый день, что-то добавляется, что-то изменяется, что-то устаревает и устаревшую информацию нужно удалять. Но будет не очень хорошо, если кто-нибудь по запарке или злому умыслу грохнет весь каталог K, что очень возможно, если у пользователей есть право Удаление. Если забрать у пользователей право Удаление, то администратору можно смело менять работу, потому что он весь день будет выполнять запросы на удаление того или иного наименования.

Вот тут и включается Удаление подпапок и файлов. На всех буквах алфавита отключается наследование и пользователям добавляется право Удаление подпапок и файлов. В итоге, в папке catalog пользователи не смогут удалить ни одну букву, но внутри букв могут удалять все, что угодно.

Удаление (delete). Здесь все просто. Удаление - это удаление. Не работает без права Чтение.

Чтение разрешений (readpermissions) дает право пользователю просматривать разрешения на папке или файле. Нет права – пользователь не видит разрешения на вкладке «Безопасность»

Смена разрешений (changepermissions) – разрешает пользователю менять разрешения, по сути делает пользователя администратором папки. Можно использовать, например, для делегирования полномочий техподдержке. Без права чтения разрешений не имеет никакого смысла. Смена разрешений не подразумевает смену владельца папки.

Смена владельца (takeownership) – для начала, кто такой владелец. Владелец – это пользователь, создавший файл или папку.

Особенностью владельца является то, что у него есть полный доступ к созданной папке, он может раздавать разрешения на свою созданную папку, но что важнее – никто не может лишить владельца права изменять разрешения на его папку или файл. Если Вася создал папку, дал полный доступ Пете, а Петя зашел и грохнул доступ пользователей к папке вообще и Васи в частности, то Вася без особого труда может восстановить статус-кво, так как он является владельцем папки. Изменить владельца папки Петя не сможет, даже если у него есть разрешение Смена владельца. Более того, даже Вася не может изменить владельца, несмотря на то, что папку создал он. Право Смена владельца относится только к группе Администраторы или Администраторы домена.

Но если Петя внутри Васиной папки создал файл и не дал Васе доступа к нему, то Васе остается только думать и гадать, что же внутри этого файла такого секретного. Вася не сможет изменить права доступа к файлу, потому что владельцем файла является Петя. Также Вася не сможет изменить владельца файла – изменение владельца подконтейнеров и объектов также является привилегией группы Администраторы, к которой Вася не относится. Единственный оставшийся у Васи вариант – смотреть на Петин файл внутри своей папки.

Управляем

В CMD для управления разрешениями используется хорошо всем известная icacls. В PowerShell управление NTFS-разрешениями выглядит примерно так:

Получить объект, на который мы будем устанавливать разрешения
$acl = get-acl c:\testperms
Соорудить строку с правами с помощью класса System.Security.AccessControl.FileSystemAccessRule . Можем задать следующие параметры:

  • группа/имя пользователя – для кого делаем ACL
  • разрешение – ACE (принимает значения, указанные в посте)
  • применяется к – в GUI это выпадающий список в дополнительных параметрах безопасности. На самом деле принимает всего 3 значения: none (только к этой папке), containerinherit (применяется ко всем подпапкам), objectinherit (применяется ко всем файлам). Значения можно комбинировать.
  • применять эти разрешения к объектам и контейнерам только внутри этого контейнера (чекбокс в GUI) – также 3 значения: none (флажок снят), inheritonly (ACE применяется только к выбранному типу объекта), nopropagateinherit (применять разрешения только внутри этого контейнера).
  • правило – разрешить (allow) или запретить (deny)
Строка с правами по умолчанию будет выглядеть так:
$permission = “contoso.com\admin”,”fullcontrol”,”containerinherit,objectinherit”,”none”,”allow”
Сделать новую ACE с определенными выше разрешениями
$ace = new-object security.accesscontrol.filesystemaccessrule $permission
И применить свежесозданную ACE к объекту
$acl.setaccessrule($ace) $acl | set-acl c:\testperms

Применяем на практике

Вооружившись знаниями о SMB и NTFS разрешениях, комбинируя их можно создавать правила доступа абсолютно любой сложности. Несколько примеров:
Тип SMB-разрешения NTFS-разрешения
Папка для всех (Public) Пользователи – Чтение/запись Пользователи – Изменение
Черный ящик. Пользователи скидывают конфиденциальные отчеты, предложения, кляузы – руководство читает. Пользователи – Чтение/запись
Руководство – Чтение/запись
Пользователи – Запись, применяется Только для этой папки. Предполагается, что запись файла в эту папку – билет в один конец, так как удобного способа редактирования без права Просмотр содержимого папки сохраненных в этой папке файлов не существует (удобного для пользователей способа записи в такую папку, кстати, тоже не существует). А просмотр нарушает конфиденциальность.

Руководство – Изменение.

Приложения Пользователи – Чтение Пользователи – Чтение, Чтение и выполнение, Просмотр содержимого папки.

Естественно, некоторые приложения могут требовать дополнительных прав для своей работы. Но в общем случае, например, хранение системных утилит для диагностики (того же SysInternals Suite) этого вполне хватает.

Профили пользователей Каждому пользователю – Чтение/запись на его папку Каждому пользователю – Изменение на его папку.

Разрешения в Windows – противоречивая штука. С одной стороны – основные разрешения довольно просты и покрывают 90% случаев. Но когда начинает требоваться более тонкая настройка: разные группы пользователей, одна папка, требования безопасности к общим папкам – то разобраться с дополнительными разрешениями, наследованиями и владельцами бывает довольно сложно.

Надеюсь, я не запутал никого еще больше.

Лабораторная работа №2

Тема: Использование приёмов работы с файловой системой NTFS. Назначение разрешений доступа к файлам и папкам.

Время выполнения: 2 часа

Цель: Научиться устанавливать разрешения NTFS для файлов и для папок для отдельных пользователей и групп в операционной системы Windows 7, а также устранять проблемы доступа к ресурсам.

Теоретические сведения

Общие сведения об использовании разрешений NTFS

Разрешения NTFS позволяют явно указать, какие пользователи и группы имеют доступ к файлам и папкам и какие операции с содержимым этих файлов или папок им разрешено выполнять. Разрешения NTFS при­менимы только к томам, отформатированным с использованием файловой системы NTFS. Они не предусмотрены для томов, использующих файло­вые системы FAT или FAT32. Система безопасности NTFS эффективна не­зависимо от того, обращается ли пользователь к файлу или папке, разме­щенным на локальном компьютере или в сети.

Разрешения, устанавливаемые для папок, отличаются от разрешений, устанавливаемых для файлов. Администраторы, владельцы файлов или папок и пользователи с разрешением «Полный доступ» имеют право на­значать разрешения NTFS пользователям и группам для управления досту­пом к этим файлам и папкам. Список управления доступом

В NTFS хранится список управления доступом (access control list -ACL) для каждого файла и папки на томе NTFS. В этом списке перечисле­ны пользователи и группы, для которых установлены разрешения для фай­ла или папки, а также сами назначенные разрешения. Чтобы пользователь получил доступ к ресурсу, в ACL должна быть запись, называемая эле­мент списка управления доступом (access control entry - АСЕ) для этого пользователя или группы, к которой он принадлежит. Эта запись назначит запрашиваемый тип доступа (например, Чтение) пользователю. Если в ACL нет соответствующей АСЕ, то пользователь не получит доступ к ресурсу.

Множественные разрешения NTFS

Вы можете установить несколько разрешений пользователю и всем груп­пам, членом которых он является. Для этого вы должны иметь представление о правилах и приоритетах, по которым в NTFS назначаются и объединяются множественные разрешения и о наследовании разрешений NTFS.

Эффективные разрешения. Эффективные разрешения пользователя для ресурса - это совокупность разрешений NTFS, которые вы назначаете отдельному пользователю и всем группам, к которым он принадлежит. Ес л и у пользователя есть разрешение «Чтение» для папки, и он входит в группу, у которой есть разрешение «Запись» для той же папки, значит, у этого пользователя есть оба разрешения.

Установка разрешений NTFS и особых разрешений

Вы должны руководствоваться определенными принципами при ус­тановке разрешений NTFS. Устанавливайте разрешения согласно потреб­ностям групп и пользователей, что включает в себя разрешение или пре­дотвращение наследования разрешений родительской папки подпапками и файлами, содержащимися в родительской папке.

Если вы уделите немного времени на планирование ваших разреше­ний NTFS и будете соблюдать при планировании несколько принципов, то обнаружите, что разрешениями легко управлять.

Для упрощения процесса администрирования сгруппируйте файлы по папкам следующих типов: папки с приложениями, папки с данными, лич­ные папки. Централизуйте общедоступные и личные папки на отдельном томе, не содержащем файлов операционной системы и других приложе­ний. Действуя таким образом, вы получите следующие преимущества:

Сможете устанавливать разрешения только папкам, а не отдельным фай­лам;

Упростите процесс резервного копирования, так как вам не придется де­лать резервные копии файлов приложений, а все общедоступные и лич­ные папки находятся в одном месте.

· Устанавливайте для пользователей только необходимый уровень досту­па. Если необходимо чтение файла, установите пользователю разрешение Чтение для этого файла. Это уменьшит вероятность случайного изменения файла или удаления важных документов и файлов приложений пользова­телем.

· Создавайте группы согласно необходимому членам группы типу досту­па, затем установите соответствующие разрешения для группы. Назначай­те разрешения отдельным пользователям только в тех случаях, когда это необходимо.

· При установке разрешений для работы с данными или файлами прило­жений установите разрешение Чтение и выполнение для групп Пользо­ватели и Администраторы. Это предотвратит случайное удаление файлов приложений или их повреждение вирусами или пользователями.

· При установке разрешений для папок с общими данными назначьте раз­решения Чтение и выполнение и Запись группе Пользователи и разре­шение Полный доступ для группы Создатель-владелец. По умолчанию пользователь, создавший документ, также является его владельцем. Владе­лец файла может дать другому пользователю разрешение на владение фай­лом. Пользователь, который принимает такие права, в этом случае стано­вится владельцем файла. Если вы установите разрешение Чтение и вы­полнение и Запись группе Пользователи и разрешение Полный доступ группе Создатель-владелец, то пользователи получат возможность читать и изменять документы, созданные другими пользователями, а также чи­тать, изменять и удалять файлы и папки, создаваемые ими.