Найти в Дзене

Как ACL для файлов и папок физически применяются на носители информации.

ACL (Access Control List, список управления доступом) — это механизм, который определяет права доступа к файлам и папкам в операционных системах. Давайте разберем, как именно ACL физически применяются на носители, где они хранятся, что записывается и какие изменения происходят с файлами при изменении ACL. ACL хранятся не внутри самого файла, а в метаданных файловой системы. Это зависит от типа файловой системы: В ACL записываются правила доступа, которые состоят из следующих элементов: Пример записи в ACL: SID: S-1-5-21-1234567890-1234567890-1234567890-1000 Права: Full Control Тип: Allow Нет, изменение ACL не влияет на дату модификации файла (Last Write Time). Это связано с тем, что ACL хранятся в метаданных файловой системы, а не в самом файле. Таким образом, сам файл не считается измененным. Однако, если вы используете утилиты, которые перезаписывают файл вместе с его метаданными (например, какой-то backup программы), дата модификации может измениться. Изменение ACL не затрагивает ст
Оглавление

ACL (Access Control List, список управления доступом) — это механизм, который определяет права доступа к файлам и папкам в операционных системах. Давайте разберем, как именно ACL физически применяются на носители, где они хранятся, что записывается и какие изменения происходят с файлами при изменении ACL.

1. Где хранятся ACL?

ACL хранятся не внутри самого файла, а в метаданных файловой системы. Это зависит от типа файловой системы:

NTFS (Windows):

  • В NTFS ACL хранятся в структуре MFT (Master File Table) — главной таблице файловой системы.
  • Каждый файл или папка в NTFS имеет запись в MFT, которая содержит метаданные, такие как:Имя файла
    Размер
    Даты создания, модификации и последнего доступа
    Права доступа (ACL)
  • ACL представляет собой часть security descriptor (дескриптор безопасности), который также включает:SID владельца файла
    SID группы-владельца
    DACL (Discretionary Access Control List) — список прав доступа
    SACL (System Access Control List) — список аудита доступа

EXT4 (Linux):

  • В EXT4 ACL хранятся в специальных расширенных атрибутах файла (xattr).
  • Расширенные атрибуты — это дополнительная область метаданных, которая дополняет стандартные права доступа Unix (rwx).

APFS (macOS):

  • В APFS ACL также хранятся в метаданных файла, аналогично NTFS.

2. Что именно записывается в ACL?

В ACL записываются правила доступа, которые состоят из следующих элементов:

  • SID (Security Identifier): Уникальный идентификатор пользователя или группы. Например:S-1-5-21-... — SID для конкретного пользователя.
    S-1-5-32-544 — SID для группы "Администраторы".
  • Права доступа: Например:
    Чтение (
    Read)
    Запись (
    Write)
    Выполнение (
    Execute)
    Полный контроль (
    Full Control)
  • Тип записи: Разрешение (Allow) или запрет (Deny).

Пример записи в ACL:

SID: S-1-5-21-1234567890-1234567890-1234567890-1000
Права: Full Control
Тип: Allow

3. Изменяется ли дата модификации файла?

Нет, изменение ACL не влияет на дату модификации файла (Last Write Time). Это связано с тем, что ACL хранятся в метаданных файловой системы, а не в самом файле. Таким образом, сам файл не считается измененным.

Однако, если вы используете утилиты, которые перезаписывают файл вместе с его метаданными (например, какой-то backup программы), дата модификации может измениться.

4. Меняются ли атрибуты файла (архивный, скрытый)?

Изменение ACL не затрагивает стандартные атрибуты файла, такие как:

  • Архивный (A)
  • Скрытый (H)
  • Только для чтения (R)
  • Системный (S)

Эти атрибуты хранятся отдельно от ACL и не имеет влияния на изменений прав доступа.

5. Как работает применение ACL?

Когда вы изменяете ACL для файла или папки:

  1. Операционная система обновляет соответствующую запись в метаданных файловой системы (например, в MFT для NTFS).
  2. Если это папка, изменения могут распространяться на подпапки и файлы (в зависимости от настроек наследования).
  3. При попытке доступа к файлу или папке система проверяет:
    SID текущего пользователя
    ACL объекта
    Соответствие прав доступа

6. Пример работы ACL в Windows (NTFS):

Создание файла:

New-Item -Path C:\test.txt -ItemType File

Просмотр текущих прав доступа:

Get-Acl C:\test.txt | Format-List

Изменение прав доступа:

$acl = Get-Acl C:\test.txt
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("BUILTIN\Users", "Read", "Allow")
$acl.SetAccessRule($rule)
Set-Acl -Path C:\test.txt -AclObject $acl

Проверка SID в ACL:

Вы можете использовать утилиту icacls для просмотра SID пользователей и групп в ACL:

icacls C:\test.txt

7. Хранение SID в ACL

SID — это ключевой элемент ACL. Он используется для однозначной идентификации пользователей и групп, даже если их имена меняются. Например:

  • Когда вы добавляете пользователя в ACL, система записывает его SID.
  • Если имя пользователя изменится позже, SID останется прежним, и права доступа продолжат работать корректно.

8. Влияние на производительность

Хотя ACL хранятся в метаданных, их использование может незначительно повлиять на производительность:

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

Заключение

ACL хранятся в метаданных файловой системы (например, в MFT для NTFS) и содержат SID пользователей/групп, права доступа и тип записи (разрешение/запрет). Изменение ACL не влияет на дату модификации файла или его атрибуты, так как ACL являются частью метаданных, а не самого файла.

Если вам нужно глубже понять работу ACL, можно использовать инструменты, такие как fsutil, icacls или PowerShell командлеты для анализа и управления правами доступа.