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 для
внутренней
службы
контекстов
файлов:
- 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.
- Обязательный файл контекстов файлов - это либо полное имя файла из 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.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) имеет следующий вид:
Где:
-d - каталог -p - именованный канал
-l - символическая ссылка -s - сокет
-- - обычный файл
- a.
- Контекст безопасности, который будет назначен этому файлу (то есть возвращён как context).
- b.
- Значение <<none>> можно использовать, чтобы указать, что для соответствующих файлов не следует повторно проставлять метки, а также при этом значении selabel_lookup(3) вернёт -1 при установке errno в ENOENT.
Пример:
# 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
/myweb /var/www
/myspool /var/spool/mail
Пример выше: когда в selabel_lookup(3) передаётся путь /myweb/index.html, функция заменяет компонент /myweb на /var/www, поэтому будет использоваться следующий путь:
ПРИМЕЧАНИЯ¶
- 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 |