문제는 내 PHP 파일이 브라우저에서 실행되지 않는다는 것입니다. 사용자에게 권한이 부족하기 때문인 것 같습니다 read
.
이 파일은 "ajax"라는 디렉토리에 있습니다.
drwxrwxrwx. 2 root root 4096 Sep 13 14:33 ajax
이 디렉토리의 내용:
-rwxrwxrwx. 1 root root 13199 Sep 13 14:33 getOrderDeliveryDates.php
-rwxrwxrwx. 1 root root 20580 Sep 13 14:33 getParcelShops.php
-rwxrwxrwx. 1 root root 1218 Sep 13 14:33 index.php
-rwxrwxrwx. 1 root root 814 Sep 13 14:33 lang.php
-rwxrwxrwx. 1 root root 6001 Sep 13 14:33 prod_reviews.php
나는 루트로 로그인했다고 100% 확신합니다.
[root@accept: nl (MP-git-branch)] $
다음 명령을 사용하여 다시 확인하십시오 id
.
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
이것은 나를 미치게 만든다.
sudo를 시도했습니다(이미 루트임에도 불구하고).
sudo chmod 777 filename
chown을 시도했습니다(이미 루트임에도 불구하고).
sudo root filename
오류나 경고가 전혀 없습니다.
운영 체제는 CentOS 6입니다.
답변1
CentOS(및 기타 Fedora/RHEL 파생 제품)는 SELinux라는 추가 보안 메커니즘을 활성화합니다. 대부분의 시스템 데몬에 추가 제한 사항을 적용합니다. 이러한 추가 제한 사항은 일반 UNIX 권한 후에 확인됩니다.
기본이 아닌 구성의 경우 SELinux를 조정해야 하는 경우가 많습니다. 파일에는 SELinux가 보안 정책을 적용하는 데 사용하는 특정 보안 레이블이 포함되어 있습니다. 문제가 특정 파일에서만 발생하는 경우 문제가 있는 파일의 SELinux 레이블을 수정해야 합니다. 사용chcon
--reference=
파일에서 태그를 복사하는 옵션이 있습니다 . 그러면 문제의 파일에 동일한 태그가 적용됩니다.
chcon --reference=<path to working file> <path to not working file(s)>
파일이 비표준 위치에 있는 경우 파일 태그 데이터베이스에 규칙을 추가해야 합니다. 이렇게 하면 다음에 파일 시스템의 레이블을 다시 지정하거나 사용할 때 restorecon
문제가 발생하지 않습니다. 라벨 선택적절하게또는 이미 적용된 레이블을 사용합니다(기존 보안 레이블 확인 사용 ls -lZ
).
다음 명령을 사용하여 태그 규칙 /path/to/directory
과 해당 콘텐츠를 추가합니다.semanage
:
semanage fcontext -a -t httpd_user_rw_content_t '/path/to/directory(/.*)?'
파일이 다른 파일 시스템에 있는 경우 다음을 사용할 수 있습니다.context
옵션기본 레이블을 적용/재정의하기 위해 마운트 지점에 사용됩니다.