SELinux는 httpd가 파일을 쓰는 것을 방지합니다.

SELinux는 httpd가 파일을 쓰는 것을 방지합니다.

저는 최근 RHEL7에 웹사이트를 개설했습니다. SELinux가 시행 모드에 있습니다. 그러나 컨텍스트를 어떻게 조정하더라도 항상 httpd의 쓰기가 차단됩니다. 감사 로그는 다음과 같습니다.

type=AVC msg=audit(1488922911.038:6188): avc:deny{write} for pid=11773 comm="httpd" name="cache" dev="xvda2" ino=42006369 scontext=system_u:system_r:httpd_t:s0 tcontext =system_u:object_r:httpd_t:s0 tclass=dir

type=SYSCALL msg=audit(1488922911.038:6188):arch=c000003e syscall=21 성공=아니요 종료=-13 a0=7f76f76142c0 a1=2 a2=0 a3=7f76e89b0ec0 프로젝트=0 ppid=740 pid=1177 3 auid = 4294967 295 uid = 48 gid = 48 euid = 48 suid = 48 fsuid = 48 egid = 48 sgid = 48 fsgid = 48 tty = (없음) ses = 4294967295 comm = "httpd" exe = "/usr/sbin/httpd" subj = system_u : system_r:httpd_t:s0 키=(null)

소스 및 대상 컨텍스트가 일치하지 않는 것 같습니다. 그런데 통일한 후에도 여전히 작동하지 않았습니다.

type=AVC msg=audit(1488923356.905:6384): avc:deny{write} for pid=11709 comm="httpd" name="cache" dev="xvda2" ino=42006369 scontext=system_u:system_r:httpd_t:s0 tcontext =system_u:system_r:httpd_t:s0 tclass=dir

type=SYSCALL msg=audit(1488923356.905:6384): arch=c000003e syscall=21 성공=no 종료=-13 a0=7f76f76122b0 a1=2 a2=0 a3=7f76e89b0ec0 items=0 ppid=740 pid=11709 auid=42949 672 9 5 번호=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(없음) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj= system_u : system_r:httpd_t:s0 키=(비어 있음)

고쳐 쓰다

Restorecon 명령을 사용하여 권한을 복원했습니다. 그러나 그것은 작동하지 않았습니다. 저는 가상 호스트를 사용하고 있으며 모든 것을 기본값으로 두었습니다.

<VirtualHost *:80>
ServerName www.hometest.com
DocumentRoot /var/www/web1
</VirtualHost>

내 파일에 대한 SeLinux 권한은 다음과 같습니다.

# ls -Z /var/www/web1
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 admin
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 core
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 download
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 extensions
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 image
-rwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 index.php
-rwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 license.txt
-rwxr-x---. apache root   system_u:object_r:httpd_sys_content_t:s0 list.bak
-rwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 php.ini
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 resources
-rwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 robots.txt
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 static_pages
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 storefront
drwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 system
-rwxr-x---. apache apache system_u:object_r:httpd_sys_content_t:s0 task.php
# ls -dZ web1/system/cache/
drwxr-x---. apache apache system_u:system_r:httpd_t:s0     web1/system/cache

어떤 제안이 있으십니까?

답변1

httpd_sys_rw_content_t내 생각엔 당신 이 쓰는 파일(캐시 디렉토리) 에 적용해야 할 것 같아요 .

http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/

노력하다

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/web1/system/cache(/.*)?"
# restorecon -Rv /var/www/web1/system/cache

관련 정보