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:
ФÐÐ ÐÐТ ФÐÐÐÐ
ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока внÑÑÑи Ñайла конÑекÑÑов 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)
ÐÐТÐРЫ
ÐеÑевод на ÑÑÑÑкий ÑзÑк вÑполнила ÐеÑаÑименко ÐлеÑÑ