Поделиться через


Управление привилегиями в файловой системе

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

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

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

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

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

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

  • SeChangeNotifyPrivilege позволяет пройти справа. Эта привилегия является важной оптимизацией в Windows, так как она удаляет затраты на выполнение проверки безопасности для каждого каталога в пути.

  • SeManageVolumePrivilege позволяет выполнять определенные операции управления на уровне тома, такие как блокировка тома, дефрагментация, размонтирование тома и установка допустимой длины данных в Windows XP и более поздних версиях. Драйвер файловой системы явно применяет эту определенную привилегию в первую очередь на основе операций FSCTL. В этом случае файловая система принимает решение о применении этой привилегии. Определение того, обладает ли вызывающий этой привилегией, осуществляется монитором безопасности в рамках обычной проверки привилегий.

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

Основные подпрограммы Windows для управления привилегиями в файловой системе:

  • SePrivilegeCheck выполняет проверку определенного набора необходимых привилегий.

  • SeSinglePrivilegeCheck выполняет проверку на наличие единой определенной привилегии; это оптимизированная версия SePrivilegeCheck.

  • SeAccessCheck выполняет обычную проверку доступа к объекту (обычно файловый объект для файловой системы).

  • SeFreePrivileges освобождает блок привилегий, возвращенный предыдущим вызовом SeAccessCheck.

  • SeAppendPrivileges добавляет включенные привилегии в структуру ACCESS_STATE. Как правило, файловая система будет использовать объект ACCESS_STATE, переданный ей при обработке IRP_MJ_CREATE.