Scroll to navigation

selabel_file(5) Документация API SELinux selabel_file(5)

ИМЯ

selabel_file - интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов файлов

ОБЗОР

#include <selinux/label.h>

int selabel_lookup(struct selabel_handle *hnd,
char **context,
const char *path, int mode);

int selabel_lookup_raw(struct selabel_handle *hnd,
char **context,
const char *path, int mode);

ОПИСАНИЕ

Внутренняя служба контекстов файлов сопоставляет сочетания 'путь/режим' с контекстами безопасности. Это действие служит для нахождения правильного контекста для каждого файла при повторном проставлении меток в файловой системе. Необходимо освободить возвращённый context с помощью freecon(3).
selabel_lookup(3) описывает функцию с её возвращаемыми значениями и кодами ошибок. Тем не менее, далее приводится более подробное описание следующих значений errno для внутренней службы контекстов файлов:

Не найден контекст, соответствующий path и mode, - это сообщение будет возвращено и в том случае, если серия файлов контекстов файлов имеет контекст <<none>> относительно path (см. раздел ФОРМАТ ФАЙЛА).

Аргумент path должен быть установлен в полный путь к файлу, назначенный контекст которого проверяется. Аргумент mode должен быть установлен в биты режима файла, как определено lstat(2). Аргумент mode может быть нулевым, но в этом случае, возможно, не удастся установить полное соответствие.

Все сообщения, созданные с помощью selabel_lookup(3), по умолчанию отправляются в stderr. Это поведение можно изменить с помощью selinux_set_callback(3).

selabel_lookup_raw(3) работает аналогично selabel_lookup(3), но не выполняет преобразование контекста.

В разделе ФАЙЛЫ приводится описание файлов конфигурации, которые используются для определения контекста файла.

ПАРАМЕТРЫ

Помимо глобальных параметров, описание которых приведено в selabel_open(3), эта внутренняя служба распознаёт следующие параметры:

Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекстов файлов. Это значение также используется как базовое имя для определения имён локальных файлов настройки.
Отличное от null значение этого параметра означает, что любую локальную настройку сопоставления контекста файла следует игнорировать.
Отличное от null значение этого параметра интерпретируется как префикс пути, например, "/etc". Будут загружены только те спецификации контекстов файлов, первый компонент которых совпадает с указанным префиксом. Это может ускорить выполнение поиска, но, возможно, не удастся найти путь, который не начинается с указанного префикса. Данная оптимизация поиска больше не требуется (и устарела), вместо неё используется file_contexts.bin.

ФАЙЛЫ

То, какие файлы контекстов файлов используются для получения контекста по умолчанию, зависит от параметра SELABEL_OPT_PATH, переданного в selabel_open(3). Если это NULL, то SELABEL_OPT_PATH по умолчанию примет значение расположения контекстов файлов активной политики (которое возвращает selinux_file_context_path(3)), в ином случае будет использовано фактическое указанное значение SELABEL_OPT_PATH.

Если параметр SELABEL_OPT_BASEONLY задан, будут обрабатываться следующие файлы:

1.
Обязательный файл контекстов файлов - это либо полное имя файла из SELABEL_OPT_PATH.value, либо (если NULL) путь, который возвращает selinux_file_context_path(3).
2.
Необязательные файлы для замены имён (файл для локального использования и файл для использования с дистрибутивами), которые присваивают псевдонимы пути для 'находящейся в памяти' версии файла контекстов файлов.
Эти файлы имеют то же имя, что и у обязательного файла контекстов файлов, и расширения .subs и .subs_dist.

Если параметр SELABEL_OPT_BASEONLY не задан, будут обработаны следующие файлы:

1.
Обязательный файл контекстов файлов, который является либо полным именем файла из SELABEL_OPT_PATH.value, либо (если NULL) путём, который возвращает selinux_file_context_path(3).
2.
Необязательный файл локальной настройки, имеющий то же имя, что и обязательный файл контекстов файлов, и расширение .local.
selinux_file_context_local_path(3) вернёт путь по умолчанию к этому файлу.
3.
Необязательный файл настройки домашнего каталога пользователя, имеющий то же имя, что и обязательный файл контекстов файлов, и расширение .homedirs.
selinux_file_context_homedir_path(3) вернёт путь по умолчанию к этому файлу.
4.
Необязательные файлы для замены имён (файл для локального использования и файл для использования с дистрибутивами), которые присваивают псевдонимы пути для 'находящейся в памяти' версии файла контекстов файлов (и .local и/или .homedirs, если они имеются). Эти файлы имеют то же имя, что и обязательный файл контекстов файлов, и расширения .subs и .subs_dist.
selinux_file_context_subs_path(3) и selinux_file_context_subs_dist_path(3) вернут пути по умолчанию к этим файлам.

По умолчанию серия файлов контекстов файлов:

/etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts
/etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.local
/etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.homedirs
/etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.subs
/etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.subs_dist

Где {SELINUXTYPE} - запись из файла конфигурации selinux config (см. selinux_config(5)).

Обязательным является только файл file_contexts, все остальные являются необязательными.

Записи внутри серии файлов контекстов файлов показаны в разделе ФОРМАТ ФАЙЛА.

ФОРМАТ ФАЙЛА

Формат контекстов файлов

Каждая строка внутри file_contexts и двух файлов настройки (.local и .homedirs) имеет следующий вид:

pathname [file_type] context

Где:

pathname
Определяющая имя пути запись, которая может быть в виде регулярного выражения.
file_type
Необязательный тип файла, который состоит из:
-b - устройство блочного ввода-вывода -c - устройство символьного ввода-вывода
-d - каталог -p - именованный канал
-l - символическая ссылка -s - сокет
-- - обычный файл
context
Запись может быть одним из следующих:
Контекст безопасности, который будет назначен этому файлу (то есть возвращён как context).
Значение <<none>> можно использовать, чтобы указать, что для соответствующих файлов не следует повторно проставлять метки, а также при этом значении selabel_lookup(3) вернёт -1 при установке errno в ENOENT.

Пример:

# ./contexts/files/file_contexts
# pathname file_type context
/.* system_u:object_r:default_t:s0
/[^/]+ -- system_u:object_r:etc_runtime_t:s0
/tmp/.* <<none>>

Формат файла подстановки

Каждая строка внутри файлов подстановки (.subs и .subs_dist) имеет вид:

subs_pathname pathname

Где:

pathname
Путь, который соответствует записи в одном или нескольких файлах конфигурации политики контекстов файлов.
subs_pathname
Путь, который станет псевдонимом имени пути (считается равнозначным при поиске).

Пример:

# ./contexts/files/file_contexts.subs
# pathname subs_pathname
/myweb /var/www
/myspool /var/spool/mail

Пример выше: когда в selabel_lookup(3) передаётся путь /myweb/index.html, функция заменяет компонент /myweb на /var/www, поэтому будет использоваться следующий путь:

/var/www/index.html

ПРИМЕЧАНИЯ

1.
Если контексты должны быть проверены, необходимо указать глобальный параметр SELABEL_OPT_VALIDATE перед вызовом selabel_open(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
2.
Если серия файлов контекстов файлов содержит много записей, selabel_open(3) может медленно выполнять чтение в файлах и (если это запрошено) проверку записей.
3.
В некоторых версиях SELinux также может присутствовать файл file_contexts.template, но он устарел.
Файл шаблона имеет тот же формат, что и файл file_contexts, а также может содержать ключевые слова HOME_ROOT, HOME_DIR, ROLE и USER. Эта функциональность была перемещена в хранилище политик и управляется semodule(8) и genhomedircon(8).

СМОТРИТЕ ТАКЖЕ

selinux(8), selabel_open(3), selabel_lookup(3), selabel_stats(3), selabel_close(3), selinux_set_callback(3), selinux_file_context_path(3), freecon(3), selinux_config(5), lstat(2), selinux_file_context_subs_path(3), selinux_file_context_subs_dist_path(3), selinux_file_context_homedir_path(3), selinux_file_context_local_path(3), semodule(8), genhomedircon(8)

АВТОРЫ

Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.

01 декабря 2011 Security Enhanced Linux