Provided by: selinux-utils_3.0-1build2_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>.