[PHP] Fatal error: Uncaught mysqli_sql_exception: Permission denied in ...

PHP Fatal error:  Uncaught mysqli_sql_exception: Permission denied in /.../???.php:59
Stack trace:
...

  SELinux(보안 강화 리눅스) 때문에 PHP-FPM에서 MySQL 접근이 막혀 PHP에서 치명적인 오류가 난 경우였다.

  audit2why와 audit2allow 명령으로 정보를 확인해 보면,

$ audit2why < /var/log/audit/audit.log
...
type=AVC msg=audit(1706454182.069:41503): avc: denied { connectto } for pid=16298 comm="php-fpm" path="/var/lib/mysql/mysql.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:unconfined_service_t:s0 tclass=unix_stream_socket permissive=0

Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one under which the audit message was generated.

Possible mismatch between current in-memory boolean settings vs. permanent ones.

$ audit2allow -a
...
#============= httpd_t ==============
...
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

  [SELinux] recv() failed (104: Connection reset by peer) while reading response header from upstream...에서 이야기한 방법을 참고하여 nginx-passenger.te 파일을 만들고, nginx-passenger.te 파일에 위에서 본 다음 내용을 더 끼워 넣는다.

module nginx-passenger 1.0;
require {
...
type httpd_t;
type unconfined_service_t;
...
class unix_stream_socket { connectto };
...
#============= httpd_t ==============
allow httpd_t unconfined_service_t:unix_stream_socket connectto;
...
  보안 규칙을 다시 적용시킨다.
$ checkmodule -M -m -o nginx-passenger.mod nginx-passenger.te
$ semodule_package -o nginx-passenger.pp -m nginx-passenger.mod
$ semodule -i nginx-passenger.pp
2024/01/29 15:14 2024/01/29 15:14
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요

  1. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 2+467-467-1=0+0+0+1 --

  2. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 3+467-467-1=0+0+0+1 --

  3. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 3*2<(0+5+467-467) --

  4. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 3*2>(0+5+467-467) --

  5. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 2+792-792-1=0+0+0+1

  6. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 3+792-792-1=0+0+0+1

  7. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 3*2<(0+5+792-792)

  8. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1 OR 3*2>(0+5+792-792)

  9. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 2+861-861-1=0+0+0+1 --

  10. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 3+861-861-1=0+0+0+1 --

  11. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 3*2<(0+5+861-861) --

  12. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 3*2>(0+5+861-861) --

  13. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 2+83-83-1=0+0+0+1 or 'VO4EdbNP'='

  14. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 3+83-83-1=0+0+0+1 or 'VO4EdbNP'='

  15. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 3*2<(0+5+83-83) or 'VO4EdbNP'='

  16. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1' OR 3*2>(0+5+83-83) or 'VO4EdbNP'='

  17. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1" OR 2+866-866-1=0+0+0+1 --

  18. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1" OR 3+866-866-1=0+0+0+1 --

  19. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1" OR 3*2<(0+5+866-866) --

  20. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    -1" OR 3*2>(0+5+866-866) --

  21. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    1*if(now()=sysdate(),sleep(15),0)

  22. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    10'XOR(1*if(now()=sysdate(),sleep(15),0))XOR'Z

  23. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    10"XOR(1*if(now()=sysdate(),sleep(15),0))XOR"Z

  24. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    (select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

  25. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    1-1; waitfor delay '0:0:15' --

  26. fnfOzvSR 2026/04/28 04:51 고유주소 고치기 답하기

    1-1); waitfor delay '0:0:15' --

  27. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1-1 waitfor delay '0:0:15' --

  28. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1WqnuwVY3'; waitfor delay '0:0:15' --

  29. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1-1 OR 419=(SELECT 419 FROM PG_SLEEP(15))--

  30. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1-1) OR 210=(SELECT 210 FROM PG_SLEEP(15))--

  31. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1-1)) OR 506=(SELECT 506 FROM PG_SLEEP(15))--

  32. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    10gupcT64' OR 808=(SELECT 808 FROM PG_SLEEP(15))--

  33. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1z1yPRFpn') OR 605=(SELECT 605 FROM PG_SLEEP(15))--

  34. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1h4oF4r3C')) OR 402=(SELECT 402 FROM PG_SLEEP(15))--

  35. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

  36. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

  37. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1'"

  38. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    @@x8FFq

  39. fnfOzvSR 2026/04/28 04:52 고유주소 고치기 답하기

    1