[SELinux] PHP Request Startup: file created in the system's temporary directory in Unknown on line 0

PHP Notice:  PHP Request Startup: file created in the system's temporary directory in Unknown on line 0

  selinux를 켰을 때에만 이 경고문이 나온다면, [SELinux] recv() failed (104: Connection reset by peer) while reading response header from upstream...에서 이야기한 방법으로 문제를 풀 수 있다.

  /var/log/audit/audit.log에서 문제가 생긴 오류 로그 정보는 아래와 같았다.

type=AVC msg=audit(1672919031.732:8252): avc:  denied  { create } for  pid=21182 comm="php-fpm" name="phpuhj4mC" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_tmp_t:s0 tclass=file permissive=0
type=SYSCALL msg=audit(1672919031.732:8252): arch=c000003e syscall=2 success=no exit=-13 a0=7fff2d969a50 a1=c2 a2=180 a3=0 items=0 ppid=21181 pid=21182 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/.../php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=PROCTITLE msg=audit(1672919031.732:8252): proctitle=7068702D66706D3A20706F6F6C207061742E696D

  audit2why에 넣어서 나오는 정보는 아래와 같다.

type=AVC msg=audit(1672919031.732:8252): avc:  denied  { create } for  pid=21182 comm="php-fpm" name="phpuhj4mC" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_tmp_t:s0 tclass=file permissive=0

Was caused by:
Missing type enforcement (TE) allow rule.

You can use audit2allow to generate a loadable module to allow this access.

  user_tmp_t에 create 권한이 없는 것이 원인이다. [SELinux] recv() failed (104: Connection reset by peer) while reading response header from upstream...에서 이야기한 nginx-passenger.te 파일에 아래 내용을 더 넣어 주었다. (임시 파일을 지울 수 있게 unlink도 함께 넣음)

module nginx-passenger 1.0;
require {
...
type httpd_tmp_t;
...
#============= httpd_t ==============
...
allow httpd_t user_tmp_t:file { create unlink open read write };
...

그리고 보안 규칙을 다시 적용시킨다.

# checkmodule -M -m -o nginx-passenger.mod nginx-passenger.te
checkmodule: loading policy configuration from nginx-passenger.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 19) to nginx-passenger.mod

# semodule_package -o nginx-passenger.pp -m nginx-passenger.mod
# semodule -i nginx-passenger.pp

※ 참고

2023/01/05 22:52 2023/01/05 22:52
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요