nginx는 동일한 소유자, 그룹 및 덜 엄격한 권한을 가진 파일을 열 수 없습니다.

nginx는 동일한 소유자, 그룹 및 덜 엄격한 권한을 가진 파일을 열 수 없습니다.

index.phpNginx에서 실행되는 웹 사이트의 파일에서 권한 거부 오류가 발생합니다. 오류는 다음과 같습니다.

2018/01/19 05:50:01 [error] 9664#9664: *17 FastCGI sent in stderr: "PHP message:
PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
Unable to open primary script: /var/www/the-site/index.php (Permission denied)" while
reading response header from upstream, client: xxx.xxx.xxx.xxx,
server: www.the-site.com, request: "GET /index.php HTTP/1.1",
upstream: "fastcgi://unix:/var/run/php5-fpm-the-site.sock:", host: "www.the-site.com"

파일 권한은

-rw-rw-r--. 1 root root 418 Aug  2 17:49 index.php

파일 권한을 777(일시적으로)로 변경해도 도움이 되지 않았습니다.

-rwxrwxrwx.  1 root root   418 Aug  2 17:49 index.php

그러나 파일을 이동하면 다음과 같습니다.

mv index.php index-old.php

index.php다음을 사용하여 새 콘텐츠 로 바꿉니다 .

<?php phpinfo(); ?>

그러면 잘 작동합니다. 사용자와 그룹은 동일하지만 이제 더 약한 권한을 갖습니다.

$ ls -l index*
-rwxrwxrwx. 1 root root 418 Aug  2 17:49 index-old.php
-rw-r--r--. 1 root root  20 Jan 19 05:56 index.php

결과는 다음과 같습니다 ls -Z.

$ ls -Z index*
-rwxrwxrwx. root root unconfined_u:object_r:user_tmp_t:s0 index-old.php
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.php

답변1

-rw-r--r--. 1 root root  20 Jan 19 05:56 index.php
          ^ this one

권한 비트 뒤의 점은 SELinux 보안 컨텍스트를 나타냅니다. SELinux 시스템을 실행 중인 경우 nginx파일을 읽으려면 일치 항목이 필요합니다. ls -Z보안 컨텍스트를 보는 데 사용할 수 있습니다 .restorecon기본 보안 컨텍스트를 복원합니다(제 생각에는 파일 위치를 기반으로 함). 또는chcon변경하세요.

이 같은

$ restorecon /var/www/the-site/index.php

또는 전체 카탈로그.

$ restorecon -r /var/www/the-site

(지금은 어디에서도 테스트할 수 없습니다. 구문을 확인하세요.)

예를 들어 참조하십시오.SELinux 태그에 대한 Red Hat 문서.

관련 정보