아파치 포트가 1024보다 크고, root 권한으로 실행하는데,
아래와 같은 오류가 발생하면서 아파치 서버가 실행되지 않는 경우가 있다.
$ service httpd start
Starting httpd:
(13)Permission denied: make_sock: could not bind to address [::]:8000
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:8000
no listening sockets available, shutting down
Unable to open logs
[FAILED]
이 경우 SELinux(Security-Enhanced Linux) 정책으로 인한 문제이므로, 아래와 같이 확인한다.
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
$ setenforce 0
$ service httpd start
Starting httpd:
[ OK ]
$ setenforce 1
이 방식으로는 restart를 하게 되면 동일한 오류가 또 발생하기 때문에,
setenforce를 아예 꺼버리거나 아니면 semanage를 이용하여 SELinux 설정을 변경한다.
semanage가 없으면 설치한다.
$ yum list policycoreutils-python
설치 완료되면,
http 포트로 지정되어 있는 설정 정보를 확인한다.
# semanage port -l | grep http
http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
사용하려는 포트가 지정된 포트인지 확인한다.
# semanage port -m -t http_port_t -p tcp 8000
/usr/sbin/semanage: tcp/800에 대한 포트가 지정되지 않았습니다
포트가 지정되어 있지 않으면, 해당 포트를 추가한다.
# semanage port -a -t http_port_t -p tcp 8000
정상적으로 등록되었는지 확인한다.
# semanage port -l | grep http
http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 8000, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
아파치 restart를 다시 실행한다.
# service httpd restart
httpd 를 정지 중: [ OK ]
httpd (을)를 시작 중: [ OK ]
위와 같이 정상적으로 실행된 상태에서,
php 페이지 호출하는 403 fobidden이 발생하고, 아래와 같은 오류가 발생하는 경우는...
[error] (13)Permission denied: access to /wordpress/wp-admin/install.php
$ getsebool -a | grep httpd
allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> on
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_manage_ipa --> off
httpd_read_user_content --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
빨간색 표시된 넘들을 on으로 설정해 준다.
$ setsebool -P httpd_can_network_connect_db on
$ setsebool -P httpd_enable_homedirs on
httpd_can_network_connect_db는 http 호출시 db 접속을 허용하는 것이고,
httpd_enable_homedirs은 http 호출시 home dir 접근을 허용한다.
httpd를 재시작해준다.
$ service httpd restart
-------------------------------------------------------------
출처 : http://dochi575.egloos.com/4867779