Inilah yang saya miliki 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
Inilah yang saya lihat /var/log/nginx/error.log
setelahnya sudo service nginx start
:
[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33
Inilah yang saya miliki 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
Apa yang salah?
ls -lZ
ditunjukkan? Cobasetenforce 0
dan lihat apakah itu berhasil.setenforce 0
membantu. Tolong, kirimkan sebagai jawaban, saya akan menerimanyaJawaban:
Ketika Anda mendapatkan
permission denied
kesalahan pada akses file dll. Karena alasan yang tidak diketahui, itu mungkin terkait dengan SELinux. Terutama ketika Anda melihat periode berikut izin seperti yangdrwxr-xr-x.
ditunjukkan olehls -l
untuk file / dir dalam pertanyaan, mereka bisa salah diberi label (Anda dapat melihatnya denganls -Z
) dan menyebabkan masalah.Anda harus terlebih dahulu memeriksa mode SELinux saat ini dengan menjalankan
getenforce
. Jika dikatakanEnforcing
, setel sementara mode kePermissive
dengan menjalankansetenforce 0
, dan lihat apakah aplikasi Anda bekerja sesudahnya.Silakan baca panduan distribusi Anda di SELinux untuk perbaikan permanen, termasuk mengatur mode SELinux saat start up, memberi label ulang file atau direktori, memperbarui kebijakan, dll. Berikut Howto for CentOS .
sumber
Mengubah seluruh SElinux tidak selalu merupakan jawaban yang tepat. Saya bukan ahli tetapi saya akan membandingkannya dengan menonaktifkan firewall jika port tidak dapat diakses.
Solusi cepat lainnya bisa dengan "mengembalikan konteks SE" file, terutama jika mereka disalin dari suatu tempat.
Lihat https://www.thegeekstuff.com/2017/05/restorecon-examples/ untuk rincian lebih lanjut.
Ini adalah perintah yang patut dicoba sebelum menonaktifkan SElinux
sumber
Full path required for exclude: net:[...].
Cara yang lebih baik daripada menonaktifkan selinux adalah dengan menggunakan perintah
Itu akan memungkinkan layanan toe nginx untuk lewat tanpa sepenuhnya menonaktifkan selinux
Info lebih lanjut tentang https://www.nginx.com/blog/using-nginx-plus-with-selinux/
Namun bagi saya menjalankan
command chcon -v --type=httpd_sys_content_t /etc/nginx/*
dan itu berfungsi dengan baik tanpa perlu mengecualikan httpd_tsumber