ИМЯ
selabel_file - интерфейс проставления меток SELinux в пространстве пользователя и формат файла конфигурации для внутренней службы контекстов файловОБЗОР
#include <selinux/label.h>char **context,
char **context,
ОПИСАНИЕ
Внутренняя служба контекстов файлов сопоставляет сочетания 'путь/режим' с контекстами безопасности. Это действие служит для нахождения правильного контекста для каждого файла при повторном проставлении меток в файловой системе. Необходимо освободить возвращённый context с помощью freecon(3).- ENOENT
- Не найден контекст, соответствующий path и mode, - это сообщение будет возвращено и в том случае, если серия файлов контекстов файлов имеет контекст <<none>> относительно path (см. раздел ФОРМАТ ФАЙЛА).
ПАРАМЕТРЫ
Помимо глобальных параметров, описание которых приведено в 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.- 1.
- Обязательный файл контекстов файлов - это либо полное имя файла из SELABEL_OPT_PATH.value, либо (если NULL) путь, который возвращает selinux_file_context_path(3).
- 2.
- Необязательные
файлы для
замены
имён (файл
для
локального
использования
и файл для
использования
с
дистрибутивами),
которые
присваивают
псевдонимы
пути для
'находящейся
в памяти'
версии
файла
контекстов
файлов.
- 1.
- Обязательный файл контекстов файлов, который является либо полным именем файла из SELABEL_OPT_PATH.value, либо (если NULL) путём, который возвращает selinux_file_context_path(3).
- 2.
- Необязательный
файл
локальной
настройки,
имеющий то
же имя, что
и
обязательный
файл
контекстов
файлов, и
расширение
.local.
- 3.
- Необязательный
файл
настройки
домашнего
каталога
пользователя,
имеющий то
же имя, что
и
обязательный
файл
контекстов
файлов, и
расширение
.homedirs.
- 4.
- Необязательные
файлы для
замены
имён (файл
для
локального
использования
и файл для
использования
с
дистрибутивами),
которые
присваивают
псевдонимы
пути для
'находящейся
в памяти'
версии
файла
контекстов
файлов (и .local
и/или .homedirs,
если они
имеются).
Эти файлы
имеют то же
имя, что и
обязательный
файл
контекстов
файлов, и
расширения
.subs и .subs_dist.
/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
ФОРМАТ ФАЙЛА
Формат контекстов файлов
Каждая строка внутри file_contexts и двух файлов настройки ( .local и .homedirs) имеет следующий вид:pathname [file_type] context
pathname
Определяющая
имя пути
запись,
которая
может быть
в виде
регулярного
выражения.
file_type
Необязательный
тип файла,
который
состоит из:
context
-b -
устройство
блочного
ввода-вывода
-c -
устройство
символьного
ввода-вывода
-d - каталог -p -
именованный
канал
-l -
символическая
ссылка -s -
сокет
-- - обычный
файл
Запись
может быть
одним из
следующих:
- a.
- Контекст безопасности, который будет назначен этому файлу (то есть возвращён как context).
- b.
- Значение <<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,
но он
устарел.
СМОТРИТЕ ТАКЖЕ
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)АВТОРЫ
Перевод на русский язык выполнила Герасименко Олеся <[email protected]>.01 декабря 2011 | Security Enhanced Linux |