Oto co mam w 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
Oto co widzę /var/log/nginx/error.log
po sudo service nginx start
:
[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33
Oto co mam w 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
Co jest nie tak?
ls -lZ
pokazuje Spróbujsetenforce 0
i zobacz, czy to działa.setenforce 0
pomógł. Prześlij go jako odpowiedź, zaakceptujęOdpowiedzi:
Gdy otrzymujesz
permission denied
błędy w dostępie do pliku itp. Z nieznanego powodu, może to być związane z SELinux. Zwłaszcza, gdy widzisz kropkę po uprawnieniach, takich jakdrwxr-xr-x.
pokazane przezls -l
dla danego pliku / katalogu, mogą one zostać błędnie oznaczone (możesz to zobaczyćls -Z
) i spowodować problem.Najpierw powinieneś sprawdzić bieżący tryb SELinux, uruchamiając
getenforce
. Jeśli to mówiEnforcing
, tymczasowo ustaw tryb naPermissive
uruchamiającsetenforce 0
i sprawdź, czy aplikacja działa później.Aby uzyskać trwałą poprawkę, zapoznaj się z instrukcją dystrybucji na temat SELinuksa, w tym ustawieniem trybu SELinux przy uruchamianiu, ponownym oznakowaniem plików lub katalogów, aktualizacją zasad itp. Oto Howto for CentOS .
źródło
Zmiana całego SElinux nie zawsze jest właściwą odpowiedzią. Nie jestem ekspertem, ale porównałbym to do wyłączania zapory, jeśli port jest niedostępny.
Innym szybkim rozwiązaniem może być „przywrócenie kontekstu SE” plików, szczególnie jeśli są one gdzieś kopiowane.
Zobacz https://www.thegeekstuff.com/2017/05/restorecon-examples/, aby uzyskać więcej informacji.
Są to polecenia, które warto wypróbować przed wyłączeniem SElinux
źródło
Full path required for exclude: net:[...].
Lepszym sposobem niż wyłączenie selinux jest użycie polecenia
Umożliwi to przejście usługi toe nginx bez całkowitego wyłączenia selinux
Więcej informacji na https://www.nginx.com/blog/using-nginx-plus-with-selinux/
Jednak dla mnie uruchomienie
command chcon -v --type=httpd_sys_content_t /etc/nginx/*
i działało poprawnie bez potrzeby wyłączania httpd_tźródło