Для Fedora 14, как в el6, я думаю, что можно просто разгрузить http SELinux модуль путем выполнения
semodule -r httpd
Это, вероятно, сделает httpd выполненным как initrc_t
или unconfined_t
.
Если это не работает на F14, можно выключить булевскую переменную SELinux ('старый' путь, от el5), как это:
setsebool httpd_disable_trans 1
и используйте
setsebool -P httpd_disable_trans 1
сделать это постоянным
Я не уверен, как Вы выключаете SELinux для единственного сервиса - я подозреваю, что Вы не можете.
Но то, что можно сделать, использовать runcon для установки апачского процесса для выполнения в неограниченном контексте.
Можно отсортировать, думают о runcon как sudoers для selinux. Это позволяет Вам указать что контекст выполнить процесс в.
Необходимо было бы изменить апачский сценарий запуска путем добавления чего-то как:
runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
В часть сценария запуска httpd, который на самом деле вызывает апача.
На моем хосте Fedora FC14 я изменил бы эту строку:
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
Считать что-то как:
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 $httpd $OPTIONS
PS я на самом деле не протестировал это в своем апачском сценарии запуска, таким образом, вышеупомянутое isa предположение относительно точно, куда я должен был бы поместить его, но я определенно использовал runcon, чтобы позволить процессам работать неограниченный прежде, таким образом, это будет работать, Вы просто, должна найти правильное место.
Нет никакой булевской переменной для глобального отключения SELinux для httpd. Однако необходимо читать httpd_selinux(8)
страница справочника для соответствующих контекстов файла необходимо использовать; в Вашем случае Вы хотите httpd_sys_script_exec_t
или httpd_unconfined_script_exec_t
, и может использовать chcon
установить его временно для тестирования, и semanage
установить его постоянно.
qustion не совсем ясен - каково точно Ваше намерение?
Я предположу, что Вы не пытаетесь открыть порт HTTP, поскольку это было бы сделано с брандмауэром вместо самого Selinux.
Так, возможно, Вы надеетесь позволять httpd демону писать в некоторый каталог, который не находится под обычным корнем документа?
Если так, затем необходимо читать на полномочиях Selinux и установить их для каталогов, к которым Вы хотите получить доступ.
Вот место для чтения об этом:
http://wiki.centos.org/HowTos/SELinux
Это релевантно, потому что и Fedora и Centos связаны с Red Hat, таким образом, это, вероятно, поможет.
[Править]
Попробуйте это:
chcon-t textrel_shlib_t ThePathToTheFile
Это было предложено PabloTwo в этом сообщении:
http://www.fedoraforum.org/forum/showthread.php?t=252552
Это было также предложено IBM в этом сообщении:
https://www-304.ibm.com/support/docview.wss? uid=swg21454550
У меня тоже была такая же проблема, когда я использовал GBrowse2. GBrowse2 сохраняет временные файлы в местах, отличных от корневого веб-сайта, и устанавливает блокировки для сеансов за пределами корневого веб-сайта. Поскольку GBrowse2 работает на Apache, SELinux позволяет httpd получать доступ / изменять каталоги вне корневого каталога. Я перешел по ссылке, приведенной в предыдущем посте:
" Вот место, чтобы прочитать об этом: http://wiki.centos.org/HowTos/SELinux "
Хотя он не дает полных инструкций о том, как решить проблему, он мне очень помог (Раздел 4: Контроль доступа SELinux). Он дал мне представление о том, как SELinux различает файлы корневого веб-сайта и файлы, не являющиеся корневыми веб-файлами. Вам необходимо изменить тип папки / файла, не являющегося корневым веб-каталогом, на тот, который совместим с типом процесса httpd. Этот тип можно установить с помощью команд, приведенных в деталях ошибки SELinux (команды semanage и restorecon). После исправления ошибки типа папки, не являющейся корневой, GBrowse2 может легко создавать новые файлы в папке, не являющейся корневой папкой, тип которой был изменен.
Преобразование моего предыдущего комментария в ответ, в популярный спрос ;)
Из отдела "вы-учитесь-учитесь-учитесь-учитесь-учитесь-всегда": Я видел, как Дэн Уолш давал вчерашнюю презентацию, в которой он объяснил новый способ инвалидное ограничение для применения в новых выпусках Fedora и EL6. Вы больше не устанавливаете булева, чтобы отключить переход (который иногда вызывает каскад в булеане, который необходимо настроить на все работает), но вы переводите определенный тип в разрешительный режим. Вы делаете это, выполняя команду 'семаньяж разрешительный -a TYPE' (в ваш случай 'semanage permissive -a httpd_t'). Это оставляет SELinux на для httpd_t, но в разрешительном режиме. - wzzrd 20 '11 мая в 8:45