내 콘텐츠는 다음과 같습니다 ls -al /etc/nginx
.
total 52
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 .
drwxr-xr-x. 78 root root 8192 Jul 28 03:37 ..
drwxr-xr-x. 2 root root 26 Jul 28 03:55 conf.d
drwxr-xr-x. 2 root root 6 May 10 09:21 default.d
-rw-r--r--. 1 root root 1034 May 10 09:21 fastcgi.conf
-rw-r--r--. 1 root root 964 May 10 09:21 fastcgi_params
-rw-r--r--. 1 root root 2837 May 10 09:21 koi-utf
-rw-r--r--. 1 root root 2223 May 10 09:21 koi-win
-rw-r--r--. 1 root root 3957 May 10 09:21 mime.types
-rw-r--r--. 1 root root 1033 Jul 28 03:43 nginx.conf
-rw-r--r--. 1 root root 596 May 10 09:21 scgi_params
-rw-r--r--. 1 root root 623 May 10 09:21 uwsgi_params
-rw-r--r--. 1 root root 3610 May 10 09:21 win-utf
/var/log/nginx/error.log
나중에 본 내용은 다음과 같습니다 sudo service nginx start
.
[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33
이것이 내가 가진 것입니다 ls -al /etc/nginx/conf.d/
:
$ ls -al /etc/nginx/conf.d/
total 8
drwxr-xr-x. 2 root root 26 Jul 28 03:55 .
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 ..
-rw-r--r--. 1 root root 230 Jul 28 03:50 foo.conf
뭐가 문제 야?
답변1
알 수 없는 이유로 파일 액세스 등에 오류가 발생하는 경우 permission denied
SELinux와 관련이 있을 수 있습니다. 특히 권한 뒤에 마침표가 있는 경우(관련 파일/디렉토리에서) drwxr-xr-x.
레이블이 잘못 지정되어 문제를 일으킬 수 있습니다.ls -l
ls -Z
먼저 를 실행하여 현재 SELinux 모드를 확인해야 합니다 getenforce
. 표시되면 Enforcing
임시로 모드를 Permissive
실행 으로 설정 setenforce 0
하고 애플리케이션이 작동하는지 확인하세요.
부팅 시 SELinux 모드 설정, 파일 또는 디렉터리 레이블 재지정, 정책 업데이트 등을 포함한 영구 수정 사항은 배포판의 SELinux 지침을 참조하세요.CentOS 가이드.
답변2
SElinux 전체를 바꾸는 것이 항상 정답은 아닙니다. 저는 전문가는 아니지만 포트에 액세스할 수 없는 경우 방화벽을 비활성화하는 것과 비교하겠습니다.
다른 빠른 해결책은 특히 파일이 어딘가에서 복사된 경우 "파일의 SE 컨텍스트를 복원"하는 것입니다.
바라보다https://www.thegeekstuff.com/2017/05/restorecon-examples/자세한 내용은.
SElinux를 비활성화하기 전에 시도해 볼 가치가 있는 명령은 다음과 같습니다.
sudo restorecon /etc/nginx/conf.d/
sudo restorecon /etc/nginx/conf.d/*
답변3
selinux를 비활성화하는 것보다 더 좋은 방법은 다음 명령을 사용하는 것입니다.
semanage permissive -a httpd_t
이렇게 하면 selinux를 완전히 비활성화하지 않고도 nginx 서비스를 통과할 수 있습니다.
추가 정보:https://www.nginx.com/blog/using-nginx-plus-with-selinux/
그러나 나에게는 command chcon -v --type=httpd_sys_content_t /etc/nginx/*
httpd_t를 제외하지 않고도 잘 작동합니다.