Обратите внимание на то, что Солярис 11 не был выпущен, но это должно произойти до конца этого года (или раньше).
Имея это в виду, Вашими опциями является Солярис 10 и Солярис 11 Экспрессов. Оба поддерживаются в производстве и потребуют, чтобы Вы купили лицензию. Таким образом, я предполагаю, что это не проблема.
Так как Вы спрашиваете, какой использовать, я также предполагаю, что Ваша компания не имеет в распоряжении трудную политику. Солярис 11 Экспрессов являются продолжением проекта OpenSolaris и предлагают много улучшений (существуют тонны документов, детализирующих его), и это имеет доступ к намного большему списку текущего программного обеспечения, готового быть установленным.
Проблема с Солярисом, который 11 Экспрессов - то, что путь к Солярису 11 не ясен, хотя это не должно быть твердо, так как оба будут основаны на IPS. Люди обновили от OpenSolaris 2009.6 (b111) к Солярису 11 Экспрессов (b151a) без большой проблемы, но это все еще означает, что необходимо будет остановиться в ближайшем будущем для обновления до Соляриса 11 "надлежащих". В некоторой среде это не желаемо, но я предполагаю в Вашем веб-сервере, это должно быть приемлемо.
Очень трудно решить это для Вас, но, если у Вас нет более твердых требований к программному обеспечению, которые передают под мандат Вас, используют Солярис 10 (в этом случае, Вы не спросили бы здесь), я советую Вам устанавливать и тестировать Солярис 11 Экспрессов. Солярис 10 нигде не рядом, это - конец жизни, но это, тем не менее, раньше, чем Солярис 11 будет. Солярис 11 Экспрессов также предлагает более приятное впечатление для людей, привыкших к средам Linux/BSD.
Запуск этой службы как init_t
, вероятно, не лучшая идея.
Причина такого поведения в том, что tvheadend
- это вероятно с меткой bin_t
, и не существует правила перехода для перемещения файла этого типа из контекста init_t
.
Вы можете выполнить поиск, чтобы узнать наверняка ..
$ sesearch -s init_t --type -c process | grep bin_t
Эта команда не возвращает результатов. Нет переходов из init_t для процесса bin_t
.
Вам также следует избегать запуска этого типа в initrc_t
, так как он не подходит для службы. На самом деле лучшим решением было бы правильно написать ограниченную политику для вашей службы, однако это выходит за рамки этого ответа.
Вместо этого, вам нужно перевести ваш процесс из init_t
в другой тип. Поскольку для этого приложения не существует политики, вероятно, лучше всего переместить ее в unlimited_t
, для которого существует переход типа.
$ sesearch -s init_t --type -c process -t unconfined_exec_t
Found 1 semantic te rules:
type_transition init_t unconfined_exec_t : process unconfined_t;
Мы также можем проверить, что правило, которое применяется в политике, не будет нажмите unlimited_t
(чего не должно быть).
$ sesearch -s avahi_t -p send_msg -c dbus -t unconfined_t --allow
Found 2 semantic av rules:
allow avahi_t unconfined_t : dbus send_msg ;
allow system_bus_type unconfined_t : dbus send_msg ;
Для этого просто измените метку вашей программы tvheadend
на unlimited_exec_t
.
semanage fcontext -a -t unconfined_exec_t -f f /usr/bin/tvheadend
Затем восстановите.
restorecon /usr/bin/tvheadend
Теперь перезапустите службу , чтобы заработала. Если вы повторно запустите ps -AZ | grep tvheadend
, вы должны увидеть, что ваш процесс работает в unlimited_t
.
В идеале для этой программы следует использовать новую политику, но если политики не существует, лучше всего запустить ее вообще без политики в домене unlimited_t
. initrc_t
и init_t
на самом деле не предназначены для использования для запуска сервисов (хотя некоторые из них там неправильно работают), initrc_t
изначально был задуман для запуска сценариев оболочки SYSV а init_t
предназначен для запуска самой systemd / init.
Вы можете исправить это, используя audit2allow для создания настраиваемого модуля политики
audit2allow -M custom_avhi <file_containing_AVC-denied messages
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i custom_avhi.pp
На странице руководства для apache_selinux
упоминается, что ] # semanage permissive
может использоваться для разрешения работы определенных процессов в разрешающем режиме .
# semanage permissive -a avahi_t
Я предлагаю найти более подробную информацию о его использовании
особенно когда SELinux предоставляет огромное количество конфигураций параметры, позволяющие данной службе выполнять только то, что вы ожидаете , и ничего более!
Однако из-за такого огромного количества вариантов управления администраторам необходимо изучить, какие варианты существуют, и решить, как / когда / где их эффективно реализовать. Как я уже упоминал, в первую очередь нужно поискать на страницах руководства в вашей системе, а также в журнале аудита в /var/log/audit/audit.log
. Для поиска сообщений об avahi, например, в файлах журнала, выполните:
# grep /usr/sbin/avahi /var/log/audit/audit.log
EDIT: , чтобы отразить обновленный вопрос
msg=avc: denied { send_msg } for msgtype=method_return dest=:1.114
spid=731 tpid=14478 scontext=system_u:system_r:avahi_t:s0
tcontext=system_u:system_r:init_t:s0
В частности, должны быть интересны следующие элементы вам:
system_dbusd_t
SELinux Тип:
$ man system_dbusd_selinux
avahi_t
Тип SELinux:
$ man avahi_selinux
avahi_exec_t
avahi_initrc_exec_t
контексты файлов avahi_var_run_t
avahi_unit_file_t
SELinux определяет типы контекста файла для avahi, если вы хотите хранить файлы с этими типами в разных путей, вам нужно выполнить команду semanage, чтобы указать альтернативную маркировку, а затем использовать restorecon, чтобы поместить метки на диске.
semanage fcontext -a -t avahi_exec_t '/srv/avahi/content(/.*)?' restorecon -R -v / srv / myavahi_content Примечание. SELinux часто использует регулярные выражения для указания меток, соответствующих нескольким файлам. Для avahi определены следующие типы файлов: avahi_exec_t - Установите файлы с типом avahi_exec_t, если вы хотите перенести исполняемый файл в домен avahi_t. Пути: / usr / sbin / avahi-daemon, / usr / sbin / avahi-autoipd, / usr / sbin / avahi-dnsconfd avahi_initrc_exec_t - Установите файлы с типом avahi_initrc_exec_t, если вы хотите переместить исполняемый файл в домен avahi_initrc_t. avahi_unit_file_t - Установите файлы с типом avahi_unit_file_t, если вы хотите обрабатывать файлы как содержимое модуля avahi.
Перейдите в блог Дэна Уолша для более подробного обсуждения / информации о SELinux, в этом сообщении, в частности, упоминается
Переход процесса говорит, когда процесс выполняется как метка a_t файл с меткой b_exec_t должен выполнять процесс как b_t. Примером этого может быть запуск службы httpd. В этом случае у нас есть unlimited_t, запускающий сценарий инициализации с меткой initrc_exec_t, а SELinux запускает процесс как initrc_t.
Кроме того, лучше всего продолжить изучение программы tvheadend
, а также управления SELinux. Вы можете создать настраиваемую политику , как это предлагается в сообщениях журнала audit
; что-то вроде:
# grep tvheadend /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
По крайней мере, пока не появятся лучшие решения, и / или tvheadend
попадает в репозиторий Fedora. Наконец, внимательно посмотрите на файл модуля (служебный файл), который вы создали для systemd
; проверьте наличие ошибок, возможных дополнений и изменений.