Секреты NTFS - права, разрешения и их наследование

Ntfs

Как и в реальном мире, в мире компьютеров и интернета есть вещи, которыми мы можем обладать и есть вещи, которыми мы обладать не можем. А не можем потому, что не имеем на них прав. Объяснять, для чего собственно были придуманы все эти разрешения и права доступа, полагаем, не нужно. Если бы их не было, любой пользователь мог бы просматривать, изменять и удалять любые не принадлежащие ему файлы не только на локальных машинах, но и на серверах.

С понятиями прав и разрешений на файлы более или менее знакомы все пользователи. Но что в действительности они собой представляют и как система определяет, какой файл можно просматривать или изменять, а какой нет? Давайте попробуем разобраться.

Структура файла в NTFS

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

Атрибуты и ACL

При работе через сервер права доступа выдаются сервером, при непосредственной же работе с дисками через интерфейс локальной машины права доступа выдаются на уровне файловой системы NTFS. Как это работает? А вот как. Каждый записанный в NTFS файл представляет собой не только данные, помимо них он также хранит служебную информацию — атрибуты и ACL (Access Control List). Кстати, атрибуты и ACL имеют не только файлы, но и папки.

Атрибуты файла

Что такое атрибуты файла, вы, в принципе, должны знать сами. Скрытый, системный, индексируемый или неиндексируемый, доступный только для чтения, готовый к архивированию — всё это называется атрибутами и просматривается в свойствах файла или папки. За права же доступа отвечают метаданные ACL. И если атрибуты описывают свойства объекта, то ACL указывает, кто именно и какие действия с этим объектом может производить. ACL также именуют разрешениями.

Структуру ACL можно представить в виде таблицы с тремя колонками.

Структура ACL

Первая колонка содержит уникальный идентификатор пользователя (SID), вторая — описание прав (read, write и т.д.), третья — флаг, указывающий разрешено ли конкретному SID пользоваться этими правами или нет. Он может принимать два значения: true (да) и false (нет).

SID

Основных прав доступа в NTFS четыре:

Read разрешает только чтение файла.
Write разрешает чтение и запись.
Modify разрешает чтение, запись, переименование, удаление и редактирование атрибутов.
Full Control даёт пользователю неограниченную власть над файлом. Помимо всего перечисленного, имеющий права Full Control пользователь может редактировать метаданные ACL. Все прочие права доступа возможность изменения ACL не предоставляют.

Владелец объекта

Кроме атрибутов и разрешений, каждый объект в файловой системе NTFS имеет своего владельца. Таковым может выступать локальный администратор, пользователь, TrustedInstaller, система и т.д. Владелец может изменять права доступа к своему файлу, однако локальный администратор имеет право назначить владельцем такого файла самого себя, следовательно, получить на него полные права, то есть Full Control.

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

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

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

Правило наследования простое и укладывается оно в одну формулировку: при своём создании каждый дочерний объект автоматически наследует разрешения ближайшего родительского объекта. Приведём пример. Если вы создали папку «А», а в ней папку «Б», то папка «Б» будет иметь те же разрешения, что и папка «А». Следовательно, все файлы в папке «Б» получат разрешения папки «А».

Отключение наследования

Явные и неявные разрешения

Все разрешения, которые наследуются автоматически, именуются неявными (implicit). И напротив, разрешения, которые устанавливаются вручную путём изменения ACL, называются явными (explicit). Отсюда вытекают два правила:

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

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

1. Явный запрет
2. Явное разрешение
3. Неявный запрет
4. Неявное разрешение

Разрешения

Особенности наследования при копировании и перемещении файлов

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

• При копировании объекта с одного тома на другой, например, с диска «С» на диск «D» копируемый объект всегда получает права или разрешения того раздела или расположенного в нём каталога, в который он копируется. Те же правила действуют при перемещении файлов между разными томами.

• При перемещении в пределах одного тома, перемещаемый объект сохраняет свою ACL, изменяется только ссылка на него в таблице MFT.

• При копировании в пределах одного тома копируемый объект получает ACL от ближайшего вышестоящего родительского каталога.

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

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 3,25 из 5)
Загрузка...

6 комментариев

  • Надо добавить в статью что будет при копировании на файловую систему FAT32 к примеру

  • Надо добавить в статью инструкцию, как не трахаться с правами доступа, если ты единственный легальный законный неповторимый уникальный полноправный администратор своих собственных любимых файлов.

  • Это всё красивая теория)) На практике столкнулся со странностями наследования при копировании файлов на сетевой хранилке между папками с разными доступами. Например: юзер1 копирует на сетевой хранилке файл1 из папки1 которую видит только он в папку2 которая доступна юзеру2 и юзеру3, но в целевой папке файл1 продолжает быть виден только юзеру1. Если этот файл1 сначала скопировать с сетевой папки1 на локальный комп и только потом положить в папку2 на сетевой хранилке, то к файлу начинает применяться наследование прав папки2. Пока не смог понять и решить данную странность. Есть у Вас объяснение??

    • Аналогичная проблема. Если из сетевой папки копировать в другую сетевую в пределах того же сетевого ресурса, то есть проблемы с наследованием прав в копируемой папке, сталкивался неоднократно. В этом случае копировать нужно либо через локальный ПК, либо делать это непосредственно на сервере в rdp. Что первое, что второе жутко неудобно, хотя в rdp быстрее копировать большие объемы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *