При настройке Web сервера Apache на Cent OS версии 6.4 понадобилось изменить номер порта, на котором будет работать служба. С этим справился, т.к. ничего сложного нет. Но когда сделал перезапуск службы httpd, получил массу негодования в консоли. Поэтому ниже заметка, как и что, сделать, чтобы такого больше не возникало.
[ekzorchik@server ~]$ sudo service httpd restart
Stopping httpd: [FAILED]
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:81
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:81
no listening sockets available, shutting down
Unable to open logs [FAILED]
Посмотрим, какие записи есть в журналах систему по этому поводу:
[ekzorchik@server ~]$ sudo bash -c “cat /var/log/audit/audit.log” | grep ‘sock’
type=AVC msg=audit(1384174680.400:329): avc: denied { name_bind } for pid=2622 comm=”httpd” src=81 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket
type=AVC msg=audit(1384174680.401:330): avc: denied { name_bind } for pid=2622 comm=”httpd” src=81 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket
type=AVC msg=audit(1384174831.939:341): avc: denied { name_bind } for pid=2639 comm=”httpd” src=81 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket
type=AVC msg=audit(1384174831.939:342): avc: denied { name_bind } for pid=2639 comm=”httpd” src=81 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:reserved_port_t:s0 tclass=tcp_socket
Решение: нужно отключить использование SELinux в системе, либо правильно настроить( я придерживаюсь пока первого варианта, т.е. отключения)
Для справки: SELinux (Security-Enhanced Linux, переводится как Linux с улучшенной безопасностью) это реализация системы принудительного контроля доступа, которая может работать совместно с классической системой контроля доступа, которая используется в Linux. С помощью SELinux можно задавать правила обращения пользователей или программ объектам системы, таким как файлы и устройства. Таким образом, можно ограничить возможности доступа программ, прописав возможности их поведения в виде политики, а операционная система с помощью SELinux обеспечит соблюдение этих политик.
Однако использование SELinux требует достаточно сложных настроек и, будучи включенной по-умолчанию, SELinux без дополнительной настройки может блокировать действия запускаемых вами программ и служб. Для большинства пользователей сложность и проблемы при настройке SELinux могут стать решающим фактором, даже принимая во внимание все преимущества от его использования. Поэтому, в том случае, если вы считаете, что классической системы контроля доступа в вашем случае достаточно для облечения конфигурирования программ и служб в CentOS 6 можно отключить SELinux.
Отобразить текущий уровень SELinux в системе:
[ekzorchik@server ~]$ sudo bash -c “cat /etc/sysconfig/selinux”
[sudo] password for ekzorchik:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing – SELinux security policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – No SELinux policy is loaded.
SELINUX=enforcing – текущая политика
# SELINUXTYPE= can take one of these two values:
# targeted – Targeted processes are protected,
# mls – Multi Level Security protection.
SELINUXTYPE=targeted
Для отключения SELinux в CentOS 6:
[ekzorchik@server ~]$ sudo nano /etc/selinux/config
И замените значение переменной SELINUX c enforcing на disabled:
После изменения настроек перезагружаем систему:
[ekzorchik@server ~]$ sudo reboot
Теперь перезапуск служб с измененными параметрами не будет сопровождаться ошибками блокировки.
Вот собственно и всё, с уважением ekzorchik.