На машине введенной в домен FreeIPA невозможно зайти доменным пользователем при включенном SELinux, потому что сервис sssd пытается получить доступ к файлам в директории /etc/selinux/alt/contexts/files, а политика ему это не позволяет: type=ROLE_ASSIGN msg=audit(1504276892.251:84): pid=1638 uid=0 auid=4294967295 ses=4294967295 subj=generic_u:generic_r:generic_t:s0 msg='op=login-sename,role,range acct="test01" old-seuser=? old-role=? old-range=? new-seuser=generic_u new-role=object_r,generic_r new-range=s0-s3:c0.c15 exe="/usr/libexec/sssd/selinux_child" hostname=? addr=? terminal=? res=success' type=AVC msg=audit(1504276892.304:85): avc: denied { write } for pid=1638 comm="selinux_child" name="files" dev="vda2" ino=440139 scontext=generic_u:generic_r:generic_t:s0 tcontext=generic_u:object_r:selinux_protected_t:s0 tclass=dir permissive=0 find /etc/ -inum 440139 /etc/selinux/alt/contexts/files При отключении SELinux заходит нормально и правила сопоставления SELinux-пользователей FreeIPA работают.
2rider: Антон, есть проблемы с исправлением?
Я этим не занимаюсь.
В багу приглашается sin@ с вопросом: а что,собственно, надо sssd от selinux в данном случае. Ему это действительно надо (тогда надо менять полиси) или его надо самого патчить, чтобы он "это" не запрашивал?
Это надо посмотреть. И ещё нужно учесть, что sssd умеет сам selinux (и тут надо уточнить, что он умеет). В поддержкой selinux sssd что-то, действительно, хочет от selinux.
Жень, исходи пожалуйста из того, что политику менять сейчас гемморойно. Но, наверное можно, особенно если кто-то сможет подробно описать что именно в ней менять (а ещё лучше сделает патчи).
Вот этот модуль пытается работать. В других ОС он имеет специальный контекст, который разрешает ему работать с selinux users. http://git.altlinux.org/gears/s/sssd.git?p=sssd.git;a=blob;f=src/providers/ipa/selinux_child.c;h=f8dd3954a7244df2dcbb910aabf8888f41306c09;hb=b47fd11a259c50e63cd674c7cba0da3f2549cae0
В федоре: # ls -Z /usr/libexec/sssd/selinux_child system_u:object_r:sssd_selinux_manager_exec_t:s0 /usr/libexec/sssd/selinux_child Мне кажется проще всего разрешить sssd делать то, что ему нужно. Т.е. добавить тип аналогичный sssd_selinux_manager_exec_t в selinux-policy-alt и установить его для selinux_child. Насколько это сложно сделать не знаю, я никогда не смотрел внутрь selinux-policy-alt.
В ALT policy НЕТ targeted политики, таким образом маппинг пользователей на selinux пользователей не имеет смысла. Freeipa работает на одном уровне MLS и поэтому 1) всех пользователей надо маппить при создании на пользователя generic_u 2) ставить freeipa_server с выключенным selinux и подключать клиента - тоже 3) после установки в /etc/sssd/sssd.conf в cекции domain/<имя домена> добавить selinux_provider=none Есть работающий стенд.
Денис, спасибо. Какие-то костыли, давайте эту ошибку переоткроем и решим со временем как сделать правильно, что бы всё работало из коробки.
(В ответ на комментарий №9) > Денис, спасибо. > > Какие-то костыли, давайте эту ошибку переоткроем и решим со временем как > сделать правильно, что бы всё работало из коробки. Я бы советовал открыть другую багу с корректной формулировкой.
в общем дальнейшее обсуждение ушло в кулуары, результатом должна стать поддержка мандатной модели selinux в sssd/freeipa. Ошибку пока прошу не закрывать.