Fedora Core 3에서 phpMyAdmin이 mysql.sock 애러를 낼때
FC3을 SELinux 사용으로 설치하게되면 mysql이 SELinux의 정책에 의해 보호를 받습니다. 그래서 phpMyAdmin에서 애러가 나는바람에 며칠 고생했네요~
애러가 나는 경우 cat /var/log/messages | grep avc 로 보면 SELinux의 보호 정책에 의해 접근 거부된 것들이 avc denied라고 표시됩니다.
이런 SELinux의 과보호 :?: 를 막아두려면 다음과 같이 입력해서 정책 적용을 꺼둘수 있습니다. setenforce 0
만약 이상태에서 잘 안되던 phpMyAdmin이 된다면 SELinux가 원인입니다.
mysqld에 대해서만 SELinux 보호 기능을 꺼두시려면 system-config-securitylevel을 실행하시면 되는데요, 문제는 GUI가 되는 환경에서만(X 윈도우) SELinux 정책을 수정할 수 있습니다. GUI가 되시면 SELinux 탭에 SELinux Service Protection 부분에서 disable .... mysqld ... 를 선택하시면 됩니다.
system-config-securitylevel가 수정하는 설정 파일은 /etc/selinux/targeted/booleans 입니다. 방금 설정한 내용을 텍스트 편집으로 하시려면 mysqld_diable_trans=1로 수정(혹은 추기)하시면 됩니다~
다시 다음을 입력해서 SELinux 보호기능을 켜실 수 있습니다.
setenforce 1
음.. mysqld에 대한 보호를 완전 해제하는 방법이라 찜찜하긴 하지만, 일단 전체 보호를 다 꺼버리지 않고 mysqld를 php로 접근할 수 있게 하는 팁이라 생각해서 올려봅니다.
더 좋은 방법을 알고 계신분은 알려주세요~~^-^
아예 설치할 때 꺼버릴 수도 있습니다. :)
아예 설치할 때 꺼버릴 수도 있습니다. :)
다음을 참고하세요.
저는 그것때문에 좀 고생을 했는데 역시 구글을 뒤져보니 답이 있더군요.
아래 링크를 참고하세요.
http://www9.ocn.ne.jp/~pcvolu/pcnet/fedopage143.htm
http://fedora.redhat.com/docs/selinux-apache-fc3/
요약해보면 다음과 같습니다.
[ Hiroshi@mysrv phpMyAdmin ] # setenforce 0
[ Hiroshi@mysrv phpMyAdmin ] # audit2allow -d
Allow httpd_t unconfined_t:unix_stream_socket { connectto };
Allow httpd_t var_lib_t:sock_file { write };
* It moves to " the /etc/selinux/targeted/src/policy/domains " directory in " cd " command.
[ Hiroshi@mysrv phpMyAdmin ] # cd /etc/selinux/targeted/src/policy/domains
* To make " vi " editor start, to add the message which is outputted to last line, with contents below superscription retention.
[ Hiroshi@mysrv domains ] # vi httpd.te
< " /etc/selinux/targeted/src/policy/domains/httpd.te " file >
Allow httpd_suexec_t user_home_dir_t:dir { search };
Allow httpd_suexec_t user_home_t:dir { getattr search };
Allow httpd_suexec_t user_home_t:file { execute execute_no_trans getattr ioctl read };
Allow httpd_t user_home_t:dir { getattr search };
Allow httpd_t user_home_t:file { getattr read };
Allow httpd_t unconfined_t:unix_stream_socket { connectto };
Allow httpd_t var_lib_t:sock_file { write };
* It executes " setenforce " command, after changing to Enforcing mode, executing " make " command, it makes the setting reflect which it adds.
[ Hiroshi@mysrv domains ] # cd..
[ Hiroshi@mysrv policy ] # setenforce 1
[ Hiroshi@mysrv policy ] # make reload
댓글 달기