Почему приложения, при SELinux в режиме Permissive, порой работают неправильно?
Опубликовано 16.1.2014 13:36 пользователем Peter Lemenkov
В новогодней статье Dan Walsh отвечает на интересный вопрос - почему приложения, когда SELinux переведен в режим Permissive, порой работают неправильно?
Как известно, SELinux работает в трех режимах - Disabled, Permissive, Enforcing (рекомендованный). Режим Permissive должен быть идентичен Enforcing за тем исключением, что все запрещенные действия разрешаются. Это позволяет отладить политики SELinux для непростых случаев, чтоб потом переключиться в Enforcing уже с правильными параметрами. Приложение, когда SELinux включен в режиме Permissive, должно работать как будто SELinux выключен. К сожалению, это порой не так, и это очень странно.
Dan разъясняет. Дело в том, что модуль ядра работает хорошо, но есть еще проверки SELinux в userspace. Dan выделяет следующие сценарии:
Эти проверки происходят в userspace, и ядерный модуль их не увидит. Их можно определить по типу сообщения "USER_AVC" в логах. И вот если эти тесты написаны неправильно, то можно увидеть запреты, даже при включенном в Permissive режиме SELinux. Такие проверки включены в самые разные части системы - D-Bus, systemd, X Server, sshd, passwd, и, к сожалению, в ряде случаев в upstream проектов, люди не хотят включать дополнительную проверку на Permissive (или еще не реализовали). Если вы столкнулись с такой проблемой, то открывайте заявку в Bugzilla.redhat.com, и Dan вам поможет.
В логах эта ситуация видна очень хорошо. Если вы переключили SELinux в Permissive режиме, и видите флаг success=yes в записи типа USER_AVC или AVC, то это нормально - сработало правило SELinux, но приложение получило доступ к запрашиваемому ресурсу. А вот если вы видите флаг success=no, то самое время сообщить в багзиллу.
Как известно, SELinux работает в трех режимах - Disabled, Permissive, Enforcing (рекомендованный). Режим Permissive должен быть идентичен Enforcing за тем исключением, что все запрещенные действия разрешаются. Это позволяет отладить политики SELinux для непростых случаев, чтоб потом переключиться в Enforcing уже с правильными параметрами. Приложение, когда SELinux включен в режиме Permissive, должно работать как будто SELinux выключен. К сожалению, это порой не так, и это очень странно.
Dan разъясняет. Дело в том, что модуль ядра работает хорошо, но есть еще проверки SELinux в userspace. Dan выделяет следующие сценарии:
- Может ли приложение соединиться с указанным D-Bus демоном?
- Позволено ли приложению запускать один из демонов systemd?
- Может ли процесс, запущенный от суперпользователя, менять пароли?
- Разрешать ли sshd логиниться dwalsh как unconfined_t?
Эти проверки происходят в userspace, и ядерный модуль их не увидит. Их можно определить по типу сообщения "USER_AVC" в логах. И вот если эти тесты написаны неправильно, то можно увидеть запреты, даже при включенном в Permissive режиме SELinux. Такие проверки включены в самые разные части системы - D-Bus, systemd, X Server, sshd, passwd, и, к сожалению, в ряде случаев в upstream проектов, люди не хотят включать дополнительную проверку на Permissive (или еще не реализовали). Если вы столкнулись с такой проблемой, то открывайте заявку в Bugzilla.redhat.com, и Dan вам поможет.
В логах эта ситуация видна очень хорошо. Если вы переключили SELinux в Permissive режиме, и видите флаг success=yes в записи типа USER_AVC или AVC, то это нормально - сработало правило SELinux, но приложение получило доступ к запрашиваемому ресурсу. А вот если вы видите флаг success=no, то самое время сообщить в багзиллу.
Карта зависимостей в Fedora
Опубликовано 16.1.2014 11:25 пользователем Peter Lemenkov
Одной из интересных задач, стоящих перед нашим коммьюнити, это разработка публично доступного механизма для бутстрапа системы. Во-1 периодически находятся энтузиасты, что переносят дистрибутив на новые платформы, а во-2 это интересно многим вендорам - полная пересборка RHEL. Важно отладить процесс до полностью автоматического режима, т.к. делать это вручную или самописными скриптами, это Dorogo & Glupo.
Для бутстрапа надо собрать не только дерево пакетов, но и инструменты для сборки дерева. А лучше потом собранными инструментами собрать инструменты еще раз. Эта работа тесно связана с еще одной задачей - ядро системы (Fedora Core) должно содержать как можно меньше пакетов, чтобы кросс-компиляция занимала меньше времени. Важно, что время уйдет в т.ч. на построение дерева зависимостей, и последующее распутывание получившегося постоянными пересборками. Смело скажем, не скрывая горькой правды, что Fedora тут сильно отстает от некоторых других дистрибутивов. Как говорят те, кто пробовал, пересобрать с нуля тот-же Debian или SUSE получится гораздо легче, чем пересобрать Fedora или RHEL. Но работа по исправлению этой ситуации ведется.
Наши коллеги, Harald Hoyer и Phil Knirsch решили построить граф зависимостей между пакетами ядра системы, и вот что у них получилось:
Можно сказать, что это политическая карта пакетов Fedora.
Для бутстрапа надо собрать не только дерево пакетов, но и инструменты для сборки дерева. А лучше потом собранными инструментами собрать инструменты еще раз. Эта работа тесно связана с еще одной задачей - ядро системы (Fedora Core) должно содержать как можно меньше пакетов, чтобы кросс-компиляция занимала меньше времени. Важно, что время уйдет в т.ч. на построение дерева зависимостей, и последующее распутывание получившегося постоянными пересборками. Смело скажем, не скрывая горькой правды, что Fedora тут сильно отстает от некоторых других дистрибутивов. Как говорят те, кто пробовал, пересобрать с нуля тот-же Debian или SUSE получится гораздо легче, чем пересобрать Fedora или RHEL. Но работа по исправлению этой ситуации ведется.
Наши коллеги, Harald Hoyer и Phil Knirsch решили построить граф зависимостей между пакетами ядра системы, и вот что у них получилось:
Можно сказать, что это политическая карта пакетов Fedora.
Различия между kdbus и Binder
Опубликовано 16.1.2014 11:00 пользователем Peter Lemenkov
Известный гентушник и дистрохоппер Greg Kroah-Hartman попробовал объяснить, почему Binder, использующийся в Android вероятно никогда не будет заменен kdbus. В статье, написанной им с помощью Kay Sievers и Lennart Poettering, он упрощает различия до двух - D-Bus требует память, а Binder целиком полагается на CPU. Грубо говоря, Binder, это синхронная система распределенных блокирующих вызовов и посылок сообщений, не хранящая их, а сразу доставляющая адресату наподобие той, что должна присутствовать в любом микроядре (аналог gen_server:call/2 в Erlang). А вот D-Bus, как раз наоборот, асинхронная неблокирующая шина данных, накапливающая сообщения в памяти (очень приблизительный аналог gen_server:cast/2 в Erlang).
Перенести Binder на использование kdbus теоретически можно, просто добавив блокирующие ioctl для kdbus, но Binder разрабатывает счетное по пальцам одной руки количество программистов, и вряд-ли у них есть возможность тестировать все заново, учитывая, что Binder уже давно отлаженно и хорошо работает.
Заметку уже обсуждают в ленте G+ автора.
Перенести Binder на использование kdbus теоретически можно, просто добавив блокирующие ioctl для kdbus, но Binder разрабатывает счетное по пальцам одной руки количество программистов, и вряд-ли у них есть возможность тестировать все заново, учитывая, что Binder уже давно отлаженно и хорошо работает.
Заметку уже обсуждают в ленте G+ автора.
Короткие новости
Опубликовано 16.1.2014 00:00 пользователем Peter Lemenkov
Участник проектов Fedora и LibreOffice, Caolán McNamara, благодаря уже известному вам переходу с устаревшего класса строк в LibreOffice на новый, наконец-то исхитрился пофиксить десятилетний баг в LibreOffice / OpenOffice.org. Конечно, в Apache OpenOffice его уже никто не будет фиксить, и он там так и останется навсегда, но кто же будет тревожить ПО с кладбища проектов, когда есть хороший LibreOffice?
Это не все новости от McNamara. Он с гордостью объявляет, что перевел уже 70% диалогов LibreOffice в новый формат GtkBuilder.
Недавно вышедший Rust 0.9 доступен в дополнительном репозитории Fedora, созданном благодаря Copr.
Инженер Red Hat, Andreas Schneider анонсировал выход libssh версии 0.6.0. Среди прочего, был добавлен серверный API для работы с открытыми ключами (в виде callback), алгоритмы ECDSA и ECDH и поддержка Kerberos.
Наконец-то появились "официальные" образы Fedora для Docker. В кавычках, потому что их собрала не RelEng группа, а наш коллега Lokesh Mandvekar.
Выпущена Fedora 20 для System z.
И забавная новогодняя новость, если кто упустил - Eric S Raymonds предложил перевести Emacs c Bazaar на Git. Bazaar, это еще один проект, поддерживаемый Canonical, кстати.
Это не все новости от McNamara. Он с гордостью объявляет, что перевел уже 70% диалогов LibreOffice в новый формат GtkBuilder.
Недавно вышедший Rust 0.9 доступен в дополнительном репозитории Fedora, созданном благодаря Copr.
Инженер Red Hat, Andreas Schneider анонсировал выход libssh версии 0.6.0. Среди прочего, был добавлен серверный API для работы с открытыми ключами (в виде callback), алгоритмы ECDSA и ECDH и поддержка Kerberos.
Наконец-то появились "официальные" образы Fedora для Docker. В кавычках, потому что их собрала не RelEng группа, а наш коллега Lokesh Mandvekar.
Выпущена Fedora 20 для System z.
И забавная новогодняя новость, если кто упустил - Eric S Raymonds предложил перевести Emacs c Bazaar на Git. Bazaar, это еще один проект, поддерживаемый Canonical, кстати.
Новости нашей инфраструктуры
Опубликовано 14.1.2014 16:25 пользователем Peter Lemenkov
Вышла новая версия Copr, новой сборочной системы, о которой вы уже слышали. В новой версии добавлена возможность сборки для EPEL 7, которую как раз недавно анонсировали.
Дикий срач Конструктивный диалог вокруг dnf, перспективной замены yum, не был безрезультатным. После недавно вышедшей версии 0.4.10, в которой была добавлена возможность плагинам добавлять команды, быстро вышла версия 0.4.11, начиная с которой возможности для плагинов были расширены еще больше (например, для создания плагина, который бы возвращал поведение, аналогичное Yum, при удалении kernel). Пока же написано и доступно пользователям лишь два плагина - noroot, который проверяет полномочия пользователя как можно раньше, и kickstart, позволяющий устанавливать пакеты используя kickstart-скрипты. К сожалению, пока API еще не стабилизировался, но лучше начинать работать над плагинами прямо сейчас, т.к. тогда можно поучаствовать в обсуждении изменений API.
Первая новость после присоединения к нам команды CentOS (всех трех человек). Открыт доступ к git-репозиториям CentOS (и зеркало на GitHub). Там пока ничего особо нету, но будет вся сборочная инфраструктура (конфиги, kickstart-файлы, и т.п.).
Ralph Bean продолжает работать над централизацией нашей инфраструктуры. Он анонсировал замену старого узла Bugz.fedoraproject.org в пользу интегрированного с Pkgdb2 решения.
И напоследок, интересная новость. Наш товарищ, Max Lapshin, написал наверное первую рабочую библиотеку по работе с RPM, не использующую librpm. С непритворным ужасом и изумлением он ознакомился с форматом пакета, о чем и пишет в своем посте. Несмотря на то, что библиотека еще не оформлена, как библиотека, и написана на Erlang, мы уверены, что проведенная им работа будет полезна в т.ч. и другим разработчикам, например, при реализации бинарного формата на любом другом языке. Напомним, что разработчикам RPM проблемы стандарта известны, и уже сформулированы планы на инфраструктуру вокруг RPM на ближайшую пятилетку. В планы, кстати, входит и dnf.
Первая новость после присоединения к нам команды CentOS (всех трех человек). Открыт доступ к git-репозиториям CentOS (и зеркало на GitHub). Там пока ничего особо нету, но будет вся сборочная инфраструктура (конфиги, kickstart-файлы, и т.п.).
Ralph Bean продолжает работать над централизацией нашей инфраструктуры. Он анонсировал замену старого узла Bugz.fedoraproject.org в пользу интегрированного с Pkgdb2 решения.
И напоследок, интересная новость. Наш товарищ, Max Lapshin, написал наверное первую рабочую библиотеку по работе с RPM, не использующую librpm. С непритворным ужасом и изумлением он ознакомился с форматом пакета, о чем и пишет в своем посте. Несмотря на то, что библиотека еще не оформлена, как библиотека, и написана на Erlang, мы уверены, что проведенная им работа будет полезна в т.ч. и другим разработчикам, например, при реализации бинарного формата на любом другом языке. Напомним, что разработчикам RPM проблемы стандарта известны, и уже сформулированы планы на инфраструктуру вокруг RPM на ближайшую пятилетку. В планы, кстати, входит и dnf.
Firefox медленно переходит на GTK3
Опубликовано 13.1.2014 23:05 пользователем Peter Lemenkov
Сразу после новости о сборке Firefox с gstreamer, пришла еще одна - выложили первую версию Firefox с поддержкой GTK3. Состояние пока очень плохое. Не только не работают плагины, но и возникают совершенно необычные глюки на ровном месте, особенно с нетипичными DE, такими как MATE. Но в целом странички уже открывает. За прогрессом можно следить в тикете №627699.
The Six Stages of systemd (Linux.conf.au 2014)
Опубликовано 13.1.2014 22:32 пользователем Peter Lemenkov
DevConf.cz 2014 с Russian Fedora
Опубликовано 13.1.2014 14:08 пользователем Peter Lemenkov
Наш десант высадится не только на FOSDEM, но и на DevConf.cz 2014, который состоится с 7 по 9 февраля в Брно, Чехия. Уже опубликовано расписание ивента, так что если есть возможность, не пропустите!
Появилась видеозапись выступления Lennart Poettering на Linux.conf.au 2014
Опубликовано 12.1.2014 14:29 пользователем Peter Lemenkov
Появилась видеозапись выступления Lennart Poettering на конференции Linux.conf.au 2014, на которой рассказал о kdbus, и его текущем состоянии:
Для пользователей Firefox, у которых не показывается видео, мы хотим сообщить, что недавно в Fedora наконец-то Firefox был собран с поддержкой gstreamer (вы уже могли слышать о планах на это). Пока собрали лишь для Rawhide (Fedora 21), но по счастливому совпадению, получившиеся пакеты спокойно ставятся в Fedora 20, так что можете с известной осторожностью пробовать. Еще вам понадобится установить следующие пакеты - gstreamer-plugins-bad, gstreamer-plugins-ugly, gstreamer-ffmpeg (как можно заметить, наши мэйнтейнеры решили не ждать перевода Firefox на gstreamer1).
УПД: еще очень желательно установить YouTube ALL HTML5 плагин для Firefox, который позволит переключать ролики ютуба на HTML5 принудительно.
Для пользователей Firefox, у которых не показывается видео, мы хотим сообщить, что недавно в Fedora наконец-то Firefox был собран с поддержкой gstreamer (вы уже могли слышать о планах на это). Пока собрали лишь для Rawhide (Fedora 21), но по счастливому совпадению, получившиеся пакеты спокойно ставятся в Fedora 20, так что можете с известной осторожностью пробовать. Еще вам понадобится установить следующие пакеты - gstreamer-plugins-bad, gstreamer-plugins-ugly, gstreamer-ffmpeg (как можно заметить, наши мэйнтейнеры решили не ждать перевода Firefox на gstreamer1).
УПД: еще очень желательно установить YouTube ALL HTML5 плагин для Firefox, который позволит переключать ролики ютуба на HTML5 принудительно.
Fedora 20 Release Party
Опубликовано 10.1.2014 12:15 пользователем i.gnatenko.brain
Всем! Всем! Всем!
Активным пользователям Fedora и просто друзьям!
В эту субботу, 11.01.2014, в 14:00:00 состоится Fedora 20 Release Party в Москве.
Явка всем обязательна! Прихватить с собой хорошего настроения, море позитива, коньки и немного денег для катка (цены на каток)!
В программе будет обсуждение новых фич Fedora 20, установка и демонстрация системы, разбор сложных ситуаций, если таковые возникнут, еда, выпивка, катание на коньках, и конечно же - море веселья!
Встреча состоится в кафе Пилзнер (ул. Большая Полянка, д.44/2, м. Октябрьская), которая плавно перетечёт в ЦПКиО им. Горького для покатушек на коньках!
Приходите, будет весело!
Подробности
P.S. коньки можно арендовать на катке
Активным пользователям Fedora и просто друзьям!
В эту субботу, 11.01.2014, в 14:00:00 состоится Fedora 20 Release Party в Москве.
Явка всем обязательна! Прихватить с собой хорошего настроения, море позитива, коньки и немного денег для катка (цены на каток)!
В программе будет обсуждение новых фич Fedora 20, установка и демонстрация системы, разбор сложных ситуаций, если таковые возникнут, еда, выпивка, катание на коньках, и конечно же - море веселья!
Встреча состоится в кафе Пилзнер (ул. Большая Полянка, д.44/2, м. Октябрьская), которая плавно перетечёт в ЦПКиО им. Горького для покатушек на коньках!
Приходите, будет весело!
Подробности
P.S. коньки можно арендовать на катке
Страницы
- « первая
- ‹ предыдущая
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »