여기 내가 가진 것입니다 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
뭐가 문제 야?
답변
permission denied
알 수없는 이유로 파일 액세스 등에 오류 가 발생하면 SELinux와 관련이있을 수 있습니다. 특히 문제의 파일 / 디렉토리에 대해 drwxr-xr-x.
표시된 것과 같은 권한 뒤에 마침표 ls -l
가 표시되면 레이블이 잘못되어 (로 표시 될 수 있음 ls -Z
) 문제가 발생할 수 있습니다.
먼저을 실행하여 현재 SELinux 모드를 확인해야합니다 getenforce
. 이 표시되면 을 실행 Enforcing
하여 모드를 일시적으로 설정하고 나중에 응용 프로그램이 작동하는지 확인하십시오.Permissive
setenforce 0
시작시 SELinux 모드 설정, 파일 또는 디렉토리 레이블 지정, 정책 업데이트 등을 포함하여 영구적으로 수정 된 내용은 SELinux의 배포 안내서를 참조하십시오 . CentOS 용 Howto입니다 .
답변
SElinux 전체를 변경하는 것이 항상 정답은 아닙니다. 나는 전문가가 아니지만 포트에 액세스 할 수없는 경우 방화벽을 비활성화하는 것과 비교하고 싶습니다.
다른 빠른 해결책은 파일이 “어딘가에서 복사 된 경우”파일의 “SE 컨텍스트를 복원”하는 것입니다.
자세한 내용은 https://www.thegeekstuff.com/2017/05/restorecon-examples/ 를 참조하십시오.
다음은 SElinux를 비활성화하기 전에 시도해 볼만한 명령입니다.
sudo restorecon /etc/nginx/conf.d/
sudo restorecon /etc/nginx/conf.d/*
답변
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를 면제 할 필요없이 제대로 작동했습니다.