Hey Emacs! This file is -*- nroff -*- source. Author: Eamon Walsh (ewalsh@tycho.nsa.gov) 2007 "selabel_file" "5" "01 декабря 2011" "Security Enhanced Linux" "Документация API SELinux"
"ИМЯ"
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 для внутренней службы контекстов файлов:
ENOENT Не найден контекст, соответствующий 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), эта внутренняя служба распознаёт следующие параметры:
SELABEL_OPT_PATH Значение этого параметра, отличное от null, определяет путь к файлу, который будет открыт вместо стандартного файла контекстов файлов. Это значение также используется как базовое имя для определения имён локальных файлов настройки.
SELABEL_OPT_BASEONLY Отличное от null значение этого параметра означает, что любую локальную настройку сопоставления контекста файла следует игнорировать.
SELABEL_OPT_SUBSET Отличное от 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." 4
Обязательный файл контекстов файлов - это либо полное имя файла из
SELABEL_OPT_PATH.value, либо (если
NULL) путь, который возвращает
selinux_file_context_path(3).
"2." 4
Необязательные файлы для замены имён (файл для локального использования и файл для использования с дистрибутивами), которые присваивают псевдонимы пути для 'находящейся в памяти' версии файла контекстов файлов.
Эти файлы имеют то же имя, что и у обязательного файла контекстов файлов, и расширения .subs и .subs_dist.
Если параметр
SELABEL_OPT_BASEONLY не задан, будут обработаны следующие файлы:
"1." 4
Обязательный файл контекстов файлов, который является либо полным именем файла из
SELABEL_OPT_PATH.value, либо (если
NULL) путём, который возвращает
selinux_file_context_path(3).
"2." 4
Необязательный файл локальной настройки, имеющий то же имя, что и обязательный файл контекстов файлов, и расширение
.local.
selinux_file_context_local_path(3) вернёт путь по умолчанию к этому файлу.
"3." 4
Необязательный файл настройки домашнего каталога пользователя, имеющий то же имя, что и обязательный файл контекстов файлов, и расширение
.homedirs.
selinux_file_context_homedir_path(3) вернёт путь по умолчанию к этому файлу.
"4." 4
Необязательные файлы для замены имён (файл для локального использования и файл для использования с дистрибутивами), которые присваивают псевдонимы пути для 'находящейся в памяти' версии файла контекстов файлов (и
.local и/или
.homedirs, если они имеются). Эти файлы имеют то же имя, что и обязательный файл контекстов файлов, и расширения
.subs и
.subs_dist.
selinux_file_context_subs_path(3) и selinux_file_context_subs_dist_path(3) вернут пути по умолчанию к этим файлам.
По умолчанию серия файлов контекстов файлов:
Где
{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
Запись может быть одним из следующих:
"a." 4
Контекст безопасности, который будет назначен этому файлу (то есть возвращён как
context).
"b." 4
Значение
<<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) имеет вид:
Где:
pathname
Путь, который соответствует записи в одном или нескольких файлах конфигурации политики контекстов файлов.
subs_pathname
Путь, который станет псевдонимом имени пути (считается равнозначным при поиске).
Пример:
.
"ПРИМЕЧАНИЯ"
"1." 4
Если контексты должны быть проверены, необходимо указать глобальный параметр
SELABEL_OPT_VALIDATE перед вызовом
selabel_open(3). Если этот параметр не указан, может быть возвращён недействительный контекст.
"2." 4
Если серия файлов контекстов файлов содержит много записей,
selabel_open(3) может медленно выполнять чтение в файлах и (если это запрошено) проверку записей.
"3." 4
В некоторых версиях 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>.