SELinux больше не будет пугать пользователей, запускающих Windows-программы в Wine
Опубликовано 13.3.2014 00:05 пользователем Peter Lemenkov
SELinux обычно вызывает проблемы лишь с откровенно глючным ПО, и чаще всего люди жалуются, что он блокирует Skype, Flash и Windows-программы в Wine. Из этого перечня видно, что SELinux работает правильно! К сожалению, среди глючных Windows-программ, запускаемых в Wine, попадаются и игры. Некоторые пользователи довольно разумно говорят, что глючную игру можно раз в пару часов и перезапустить - чай не Emacs, и не хотелось бы чтоб SELinux ее блокировал. Dan Walsh прислушался к таким пользователям.
Dan объявил, что DAC-проверки для случая mmap_zero будут выполняться перед проверками MAC (патч был предложен инженером Red Hat, Paul Moore). Раньше программа под Wine зачастую пыталась mmap-ить память начиная с адреса меньшего, чем разрешенное пороговое значение в /proc/sys/vm/mmap_min_addr , что у нее, разумеется, не получалось. Для программы это было некритично - она просто повторяла попытку с увеличенным адресом. Проблема в том, что проводилась и MAC, и DAC проверки, в результате чего логи засыпались сообщениями вида SELinux is preventing /usr/bin/wine-preloader from 'mmap_zero' accesses on the memprotect, пугавшими пользователя. Теперь будет проводиться сначала DAС-проверка, и только если она успешно прошла, будет проверка MAC (самого SELinux). Таким образом MAC-проверки для пользовательских приложений вообще не потребуется, т.к. DAC вернет ошибочное значение EPERM. Проверка MAC будет проводиться только для тех приложений, что запущены от суперпользователя (прошедшие DAC).
Заодно Dan рассказал про интересную историю, которая произошла недавно. У одного из заказчиков Red Hat не запускались Web-приложения для OpenShift со смонтированной с nosuid партиции, и Dan описывает как он решал эту проблему. Обратите внимание, какой уровень поддержки оказала компания, раз проблема была поднята непосредственно для разработчика подсистемы ядра. Так-то!
Dan объявил, что DAC-проверки для случая mmap_zero будут выполняться перед проверками MAC (патч был предложен инженером Red Hat, Paul Moore). Раньше программа под Wine зачастую пыталась mmap-ить память начиная с адреса меньшего, чем разрешенное пороговое значение в /proc/sys/vm/mmap_min_addr , что у нее, разумеется, не получалось. Для программы это было некритично - она просто повторяла попытку с увеличенным адресом. Проблема в том, что проводилась и MAC, и DAC проверки, в результате чего логи засыпались сообщениями вида SELinux is preventing /usr/bin/wine-preloader from 'mmap_zero' accesses on the memprotect, пугавшими пользователя. Теперь будет проводиться сначала DAС-проверка, и только если она успешно прошла, будет проверка MAC (самого SELinux). Таким образом MAC-проверки для пользовательских приложений вообще не потребуется, т.к. DAC вернет ошибочное значение EPERM. Проверка MAC будет проводиться только для тех приложений, что запущены от суперпользователя (прошедшие DAC).
Заодно Dan рассказал про интересную историю, которая произошла недавно. У одного из заказчиков Red Hat не запускались Web-приложения для OpenShift со смонтированной с nosuid партиции, и Dan описывает как он решал эту проблему. Обратите внимание, какой уровень поддержки оказала компания, раз проблема была поднята непосредственно для разработчика подсистемы ядра. Так-то!