검색결과 리스트
글
nginx / redis 설치 후, Permission Denied 발생
개요
이번에 CentOS 에 nginx 를 설치하는 작업을 했습니다. 뭐 그냥 대충 설치하면 되죠.
그런데 root 디렉토리를 /usr/share/nginx/html 에서 다른 사용자 홈으로 변경하면 동작이 안되는 겁니다.
즉, /usr/share/nginx/html 에서만 동작한다는 이야깁니다.
에러 로그를 보니, 아래처럼 나옵니다.
2016/04/07 12:01:38 [crit] 13285#0: *1 stat() "/home/und3r/html/tools/public/" failed (13: Permission denied), client: 111.91.142.52, server: localhost, request: "GET / HTTP/1.1", host: "sungwook.kim"
2016/04/07 12:01:38 [crit] 13285#0: *1 stat() "/home/und3r/html/tools/public/" failed (13: Permission denied), client: 111.91.142.52, server: localhost, request: "GET / HTTP/1.1", host: "sungwook.kim"
2016/04/07 12:01:38 [error] 13285#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 111.91.142.52, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "sungwook.kim"
2016/04/07 12:01:38 [error] 13285#0: *1 testing "/home/und3r/html/tools/public" existence failed (13: Permission denied) while logging request, client: 111.91.142.52, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "sungwook.kim"
전체 폴더를 777 로 줘보기도 하고, 소유권을 nginx 로 지정해도..
저런 에러가 계속 납니다.
권한이 있는데 권한이 없다!!!!!
sudo -u nginx stat /home/und3r/html/tools/public
이렇게 커맨드를 날려보면, 값을 잘 가져 옵니다.
그런데 왜..도대체 왜 안되는걸까요?
해결방법
인터넷에 돌아다니는 각종 방법을 다 해보았습니다.
그러나 대부분 글이 퍼미션을 주었느냐, 755 로 해보아라. 이런 글들이 대부분이더군요.
당연히..안됩니다 ㅠㅠ
그러다가 우연히 audit 라는걸 발견했고, 로그 확인에 들어갔습니다.it.log
[root@localhost audit]# tail -n 10 /var/log/audit/audit.log
type=AVC msg=audit(1459998098.790:3649): avc: denied { getattr } for pid=13165 comm="php-fpm" path="/home/und3r" dev=dm-2 ino=2490369 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
type=SYSCALL msg=audit(1459998098.790:3649): arch=c000003e syscall=4 success=no exit=-13 a0=7fb4f2826338 a1=7fff5d5d0470 a2=7fff5d5d0470 a3=6e692f63696c6275 items=0 ppid=13163 pid=13165 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=85 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1459998098.792:3650): avc: denied { search } for pid=13285 comm="nginx" name="und3r" dev=dm-2 ino=2490369 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
type=SYSCALL msg=audit(1459998098.792:3650): arch=c000003e syscall=4 success=no exit=-13 a0=212c7b2 a1=7fffb276f150 a2=7fffb276f150 a3=6166615320303131 items=0 ppid=13283 pid=13285 auid=500 uid=498 gid=499 euid=498 suid=498 fsuid=498 egid=499 sgid=499 fsgid=499 tty=(none) ses=85 comm="nginx" exe="/usr/sbin/nginx" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
type=MAC_POLICY_LOAD msg=audit(1459998203.248:3651): policy loaded auid=500 ses=85
type=SYSCALL msg=audit(1459998203.248:3651): arch=c000003e syscall=1 success=yes exit=8080665 a0=4 a1=7fc959bdd000 a2=7b4d19 a3=7fff50f473b0 items=0 ppid=13300 pid=13301 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=85 comm="load_policy" exe="/sbin/load_policy" subj=unconfined_u:unconfined_r:load_policy_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1459998213.172:3652): avc: denied { getattr } for pid=13166 comm="php-fpm" path="/home/und3r" dev=dm-2 ino=2490369 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
type=SYSCALL msg=audit(1459998213.172:3652): arch=c000003e syscall=6 success=no exit=-13 a0=7fff5d5ce290 a1=7fff5d5cdb70 a2=7fff5d5cdb70 a3=b items=0 ppid=13163 pid=13166 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=85 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1459998742.883:3653): avc: denied { getattr } for pid=13167 comm="php-fpm" path="/home/und3r" dev=dm-2 ino=2490369 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
type=SYSCALL msg=audit(1459998742.883:3653): arch=c000003e syscall=6 success=no exit=-13 a0=7fff5d5ce290 a1=7fff5d5cdb70 a2=7fff5d5cdb70 a3=b items=0 ppid=13163 pid=13167 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=85 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
이런 썩을...
에러가 허벌나게 나고 있네요. -_-;
그래서 audit 로 관련 내용을 찾아보았습니다. 보안관련해서 내용이 나옵니다.
https://www.digitalocean.com/community/tutorials/understanding-the-linux-auditing-system-on-centos-7
yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M swnginx
sudo semodule -i swnginx.pp
다 끝났습니다.
nginx 를 재시작 해 주면, 정상적으로 잘 동작합니다. :)
더불어....
Redis 가 또 말썽입니다. PHP 에서 Redis 로 연결이 안됩니다.
마찬가지로 audtit 문제입니다.
아래처럼 하고, audit 및 각 서버를 모두 재시작 해 주면 정상동작 합니다 :)
# semanage port -a -t http_port_t -p tcp 6379
# semanage port -l | egrep '(^http_port_t|6379)'
http_port_t tcp 6379, 80, 81, 443, 488, 8008, 8009, 8443, 9000
Connected successfully.
port (6370)는 본인이 사용하는 redis 포트입니다.
생소한 auditing 이라는 것 때문에, 엄청 삽질했네요.
도움이 되실분들이 얼마나 있을지 모르겠지만, 간만에 포스팅 합니다.
(사실 제가 나중에 잊어버리면 보려고 ㅋㅋ)
'Linux' 카테고리의 다른 글
터미널로 IRC 사용하기(한글지원) (0) | 2011.07.21 |
---|---|
우분투(ubuntu)에서 P7P55D 메인보드 사용시 Network Adapter 문제 (1) | 2011.02.08 |
우분투(ubuntu) 10.10 에서 PS/2 먹통문제 (0) | 2011.02.05 |
RECENT COMMENT