Provided by: selinux-utils_2.9-2_amd64 bug

ИМЯ

       selabel_x  -  интерфейс  проставления  меток  SELinux в пространстве пользователя и формат
       файла конфигурации для внутренней службы контекстов оконной системы X Window  System.  Эта
       внутренняя  служба  также  используется  для  определения  контекста по умолчанию, который
       следует присвоить подключённым удалённо клиентам X

ОБЗОР

       #include <selinux/label.h>

       int selabel_lookup(struct selabel_handle *hnd,
                          char **context,
                          const char *object_name, int object_type);

       int selabel_lookup_raw(struct selabel_handle *hnd,
                          char **context,
                          const char *object_name, int object_type);

ОПИСАНИЕ

       Внутренняя служба контекстов X сопоставляет имена объектов X Window System  с  контекстами
       безопасности.  Это  действие  служит  для  нахождения правильного контекста для объектов X
       Window System, значимость и/или семантика использования которых  в  основном  определяются
       именем. Необходимо освободить возвращённый context с помощью freecon(3).
       selabel_lookup(3) описывает функцию с её возвращаемыми значениями и кодами ошибок.

       Эта  внутренняя  служба также используется для определения контекста по умолчанию, который
       следует назначить для подключённых удалённо клиентов X.

       Для аргумента object_type необходимо установить одно из следующих значений:

              SELABEL_X_PROP
                     Аргумент object_name указывает имя свойства окна, например, "WM_NAME".

              SELABEL_X_SELN
                     Аргумент object_name указывает имя выделения, например, "PRIMARY".

              SELABEL_X_EXT
                     Аргумент object_name указывает имя расширения протокола, например, "RENDER".

              SELABEL_X_EVENT
                     Аргумент    object_name    указывает    имя    типа    события,    например,
                     "X11:ButtonPress".

              SELABEL_X_CLIENT
                     Аргумент  object_name  игнорируется,  но его значением необходимо установить
                     либо  *  (звёздочка,  'подстановочный  знак':  будет   выбрана   запись   по
                     умолчанию), либо конкретную запись, такую как "remote" в файле контекстов X,
                     как показано в разделе ПРИМЕР. В этом случае  будет  возвращён  контекст  по
                     умолчанию, который следует присвоить удалённым клиентам X.

              SELABEL_X_POLYPROP
                     Работает  аналогично SELABEL_X_PROP, но проверяет, было ли свойство отмечено
                     как многоэкземплярное. См. ПРИМЕЧАНИЯ далее.

              SELABEL_X_POLYSELN
                     Аналогично SELABEL_X_SELN, но проверяет,  было  ли  выделение  отмечено  как
                     многоэкземплярное. См. ПРИМЕЧАНИЯ далее.

       Все  сообщения,  созданные  selabel_lookup(3),  по  умолчанию  отправляются  в stderr. Это
       поведение можно изменить с помощью selinux_set_callback(3).

       selabel_lookup_raw работает аналогично  selabel_lookup,  но  не  выполняет  преобразование
       контекста.

       В  разделе  ФАЙЛЫ  приводится  описание  файлов  конфигурации,  которые  используются  для
       определения контекстов объектов Х.

ПАРАМЕТРЫ

       Помимо глобальных параметров, описание которых приведено в selabel_open(3), эта внутренняя
       служба распознаёт следующие параметры:

              SELABEL_OPT_PATH
                     Значение этого параметра, отличное от null, определяет путь к файлу, который
                     будет открыт вместо стандартного файла контекстов Х (подробные сведения  см.
                     в разделе ФАЙЛЫ).

ФАЙЛЫ

       То,  какой  файл  контекста  Х  будет использоваться для получения контекста по умолчанию,
       зависит от параметра  SELABEL_OPT_PATH,  переданного  в  selabel_open(3).  Если  NULL,  то
       значением SELABEL_OPT_PATH по умолчанию станет расположение контекстов Х активной политики
       (возвращённое selinux_x_context_path(3)). В ином  случае  будет  использовано  фактическое
       указанное значение SELABEL_OPT_PATH.

       Файл контекстов объектов Х по умолчанию:
              /etc/selinux/{SELINUXTYPE}/contexts/x_contexts

       Где {SELINUXTYPE} - запись из файла конфигурации selinux config (см. selinux_config(5)).

       Записи,  находящиеся  внутри файла контекстов X, показаны в разделах Значения строки имени
       объекта и ФОРМАТ ФАЙЛА.

Значения строки имени объекта

       Имена строк, назначенные аргументам object_type,  которые  могут  присутствовать  в  файле
       контекстов X:

                                 ┌───────────────────┬────────────────┐
                                 │object_typeТекстовое имя  │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_PROP     │ property       │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_SELN     │ selection      │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_EXT      │ extension      │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_EVENT    │ event          │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_CLIENT   │ client         │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_POLYPROP │ poly_property  │
                                 ├───────────────────┼────────────────┤
                                 │SELABEL_X_POLYSELN │ poly_selection │
                                 └───────────────────┴────────────────┘

ФОРМАТ ФАЙЛА

       Каждая строка внутри файла контекстов X имеет следующий вид:
              object_type object_name context

       Где:
              object_type
                     Это  строковое  представление  типа  объекта,  показанное в разделе Значения
                     строки имени объекта.  Несколько строк с одной и той же строкой  object_type
                     сформируют блок записей (каждая со своей строкой object_name).
              object_name
                     Это  имена  объектов  конкретного  ресурса  сервера  X,  например,  PRIMARY,
                     CUT_BUFFER0 и  т.д.  Обычно  они  определены  в  исходном  коде  сервера   X
                     (protocol.txt  и  BuiltInAtoms в каталоге dix исходного пакета xorg-server).
                     Запись может содержать подстановочные  знаки  '*'  или  '?'  для  выполнения
                     сопоставления  с  дополнением  или подстановкой.  Следует учитывать, что при
                     использовании '*' важен порядок  записей  в  файле.  '*'  в  отдельном  виде
                     используется  для  того, чтобы обеспечить назначение резервного контекста по
                     умолчанию, это должна быть последняя запись в блоке object_type.
              context
                     Контекст безопасности, который будет применён к объекту.

       Пример 1:

       # object_type  object_name  context
       selection      PRIMARY      system_u:object_r:clipboard_xselection_t:s0
       selection      *            system_u:object_r:xselection_t:s0

       Пример 2 - этот пример показывает, как можно настроить запись клиента таким образом, чтобы
       она всегда находилась:

       # object_type  object_name  context
       client         *            system_u:object_r:remote_t:s0

ПРИМЕЧАНИЯ

       1.  Свойства  и  выделения  отмечаются  как многоэкземплярные или нет. Для этих типов имён
           параметр "POLY" выполняет поиск только имён, которые отмечены как многоэкземплярные, в
           то  время  как  другой  параметр  выполняет поиск только имён, которые отмечены как не
           многоэкземплярные. Пользователям этого интерфейса следует проверить оба  сопоставления
           и  затем  (необязательно)  действовать  на  основе  полученного  результата (например,
           сделать объект многоэкземплярным).

       2.  Если  контексты  должны  быть  проверены,  необходимо  указать   глобальный   параметр
           SELABEL_OPT_VALIDATE  перед  вызовом  selabel_open(3).  Если  этот параметр не указан,
           может быть возвращён недействительный контекст.

СМОТРИТЕ ТАКЖЕ

       selinux(8), selabel_open(3), selabel_lookup(3), selabel_stats(3), selabel_close(3),
       selinux_set_callback(3), selinux_x_context_path(3), freecon(3), selinux_config(5)

АВТОРЫ

       Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.