В разрешении SELinux отказано Phusion Passenger для Redmine

Я пытаюсь установить Redmine на CentOS 6.3, но продолжаю получать эту ошибку в файле журнала

Passenger could not be initialized because of this error: Unable to start 
the Phusion Passenger watchdog (/usr/lib/ruby/gems/1.8/gems/passenger-4.0.20/buildout
 /agents/PassengerWatchdog): Permission denied (errno=13)

Я искал в Интернете и не могу найти эту ошибку где-либо или каким-либо способом ее исправить. Я попытался изменить права доступа к папке на 777 и apache:apache, но ничего не вышло.

Единственное решение, которое я придумал, чтобы заставить redmine работать, - это установить для SELinux значение disabled или permissive (что я не хочу делать).

Есть ли у кого-нибудь другой способ решить эту проблему, оставляющий включенным SELinux?

Нашел файл журнала SELinux в / var / log / messages

вот конец файла

    Oct 16 14:07:30 localhost pulseaudio[2329]: alsa-util.c: Disabling timer-based scheduling because running inside a VM.
    Oct 16 14:07:30 localhost rtkit-daemon[2183]: Sucessfully made thread 2331 of process 2329 (/usr/bin/pulseaudio) owned by '500' RT at priority 5.
    Oct 16 14:07:30 localhost pulseaudio[2329]: alsa-util.c: Disabling timer-based scheduling because running inside a VM.
    Oct 16 14:07:30 localhost rtkit-daemon[2183]: Sucessfully made thread 2332 of process 2329 (/usr/bin/pulseaudio) owned by '500' RT at priority 5.
    Oct 16 14:07:31 localhost rtkit-daemon[2183]: Sucessfully made thread 2427 of process 2427 (/usr/bin/pulseaudio) owned by '500' high priority at nice level -11.
    Oct 16 14:07:31 localhost pulseaudio[2427]: pid.c: Daemon already running.
    Oct 16 14:08:04 localhost kernel: type=1400 audit(1381957684.726:5): avc:  denied  { execute_no_trans } for  pid=2663 comm="httpd" path="/usr/lib/ruby/gems/1.8/gems/passenger-4.0.20/buildout/agents/PassengerWatchdog" dev=dm-0 ino=1048752 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:lib_t:s0 tclass=file
    Oct 16 14:08:04 localhost kernel: type=1400 audit(1381957684.760:6): avc:  denied  { execute_no_trans } for  pid=2668 comm="httpd" path="/usr/lib/ruby/gems/1.8/gems/passenger-4.0.20/buildout/agents/PassengerWatchdog" dev=dm-0 ino=1048752 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:lib_t:s0 tclass=file
    Oct 16 14:09:11 localhost pulseaudio[2329]: alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write!
    Oct 16 14:09:11 localhost pulseaudio[2329]: alsa-sink.c: Most likely this is a bug in the ALSA driver 'snd_intel8x0'. Please report this issue to the ALSA developers.
    Oct 16 14:09:11 localhost pulseaudio[2329]: alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.

какие-либо предложения?


person Community    schedule 16.10.2013    source источник


Ответы (2)


Итак, вы можете исправить это с помощью audit2allow (yum install audit-libs-python audit-libs).

SELinux ведет журнал в /var/log/audit/audit.log. Если вы отслеживаете и фиксируете результат перезапуска веб-службы (перезапуск службы httpd), вы можете запустить новый вывод через audit2allow и создать модуль для установки под selinux ...

Итак, предполагая, что вы записали его в файл с именем "audit_tmp":

cat audit_tmp | audit2allow -D -M passenger

В результате будет создан файл с именем пассажира.pp, который вы можете применить, используя:

semodule -i passenger.pp

Это разблокирует первое, что мешало загрузке пассажира, но имейте в виду, что их, вероятно, будет больше, поэтому вам придется повторять процесс снова, пока он не сработает. Надеюсь это имеет смысл!

person sensadrome    schedule 12.12.2013
comment
Если вы собираетесь поступить таким образом, сначала установите setenforce 0, чтобы он проверил все отказы, которые будут встречаться одновременно. Также неразумно просто слепо включать все в журнале аудита, не понимая, почему вы его нажимаете. Наконец, возможны отказы, которые вообще не регистрируются в журнале аудита (см. Параметр dontaudit). - person sosiouxme; 26.06.2014
comment
Да, это справедливо. Однако некоторые приложения ведут себя по-разному в зависимости от статуса SELINUX, поэтому простая установка для него разрешающего режима также может не улавливать все отказы. - person sensadrome; 30.09.2014
comment
Пришлось установить audit2allow через: yum install policycoreutils-python на Centos 7 - person Arkhitech; 24.02.2015

Взгляните на / var / log / syslog. Этот файл содержит сообщения об ошибках SELinux, в которых рассказывается, как исправить любые проблемы с разрешениями.

person Hongli    schedule 16.10.2013
comment
Нет системного журнала в / var / log /, может ли он быть где-то еще или под другим именем? Я искал в / var / log / httpd / error_log, где я получил ошибку, которую я изначально опубликовал - person ; 17.10.2013
comment
Тогда / var / log / messages? - person Hongli; 17.10.2013
comment
да, я отредактировал вопрос, потому что ответ не подошел. но на основе этого файла я все еще не знаю, что делать, чтобы исправить проблему - person ; 17.10.2013
comment
Я вижу, что ваш / var / log / messages не содержит закрытых сообщений (которые помогают в решении проблем). Воспользуйтесь этим руководством, чтобы включить sealert: wiki.centos.org/HowTos/ - person Hongli; 17.10.2013
comment
Да, я просто получаю сообщение об ошибке, никаких инструкций по ее исправлению. Я прочитал эту страницу, вот как я узнал, где находится файл журнала, но я посмотрю еще раз, думаю, это лучшая помощь, которую я получу в этом. Спасибо за ответы - person ; 17.10.2013
comment
Обычно он находится в /var/log/audit/audit.log, но его можно настроить в syslog.conf. Также не все опровержения регистрируются. - person sosiouxme; 26.06.2014