Provided by: selinux-utils_3.5-2ubuntu2.1_amd64 bug

ИМЯ

       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
             /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
                     Запись может быть одним из следующих:

                            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, но он устарел.
           Файл  шаблона  имеет  тот же формат, что и файл 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>.

Security Enhanced Linux                          01 декабря 2011                                 selabel_file(5)