selabel_x

ÐÐЯ
ÐÐÐÐР
ÐÐÐСÐÐÐÐ
ÐÐРÐÐÐТРЫ
ФÐÐÐЫ
ÐнаÑÐµÐ½Ð¸Ñ ÑÑÑоки имени обÑекÑа
ФÐРÐÐТ ФÐÐÐÐ
ÐРÐÐÐЧÐÐÐЯ
СÐÐТРÐТРТÐÐÐÐ
ÐÐТÐРЫ


ÐÐЯ

selabel_x − инÑеÑÑÐµÐ¹Ñ Ð¿ÑоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÑок SELinux в пÑоÑÑÑанÑÑве полÑзоваÑÐµÐ»Ñ Ð¸ ÑоÑÐ¼Ð°Ñ Ñайла конÑигÑÑаÑии Ð´Ð»Ñ Ð²Ð½ÑÑÑенней ÑлÑÐ¶Ð±Ñ ÐºÐ¾Ð½ÑекÑÑов оконной ÑиÑÑÐµÐ¼Ñ X Window System. ÐÑа внÑÑÑеннÑÑ ÑлÑжба Ñакже иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑекÑÑа по ÑмолÑаниÑ, коÑоÑÑй ÑледÑÐµÑ Ð¿ÑиÑвоиÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÑннÑм ÑдалÑнно клиенÑам X

ÐÐÐÐР

#include

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:

Image grohtml-1005181.png

ФÐРÐÐТ ФÐÐÐÐ

ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока внÑÑÑи Ñайла конÑекÑÑов 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 bodies manpages.csv script_extrae_body.sh script.sh usr system_u:object_r:xselection_t:s0

ÐÑÐ¸Ð¼ÐµÑ 2 – ÑÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑ, как можно наÑÑÑоиÑÑ Ð·Ð°Ð¿Ð¸ÑÑ ÐºÐ»Ð¸ÐµÐ½Ñа Ñаким обÑазом, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð° вÑегда наÑодилаÑÑ:

# object_type object_name context
client bodies manpages.csv script_extrae_body.sh script.sh usr 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)

ÐÐТÐРЫ

ÐеÑевод на ÑÑÑÑкий ÑзÑк вÑполнила ÐеÑаÑименко ÐлеÑÑ .