저는 최근 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
내 생각엔 당신 이 쓰는 파일(캐시 디렉토리) 에 적용해야 할 것 같아요 .
노력하다
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/web1/system/cache(/.*)?"
# restorecon -Rv /var/www/web1/system/cache