Nginx, open () “/etc/nginx/conf.d/foo.conf” başarısız olduğunu söylüyor (13: İzin reddedildi)


12

İşte içinde ne var 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.logSonra ne görüyorum sudo service nginx start:

[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33

İçinde bu var 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

Sorun nedir?


2
SELinux zorunlu mu? Ne ls -lZgösteriyor? Çalışıp setenforce 0çalışmadığını görün ve deneyin .
yaegashi

Gerçekten de setenforce 0yardımcı oldu. Lütfen cevap olarak gönderin, kabul edeceğim
yegor256

Yanıtlar:


19

permission deniedBilinmeyen bir nedenden dolayı dosya erişimi vb. İle ilgili hatalar alırsanız , bu SELinux ile ilişkili olabilir. Özellikle söz konusu dosya / dizin için drwxr-xr-x.gösterilen izinleri izleyen bir süre gördüğünüzde ls -l, bunlar yanlış etiketlenebilir (görebileceğiniz gibi ls -Z) ve soruna neden olabilir.

Önce mevcut SELinux modunu çalıştırarak kontrol etmelisiniz getenforce. Yazıyorsa Enforcing, modu geçici olarak Permissiveçalıştırarak ayarlayın setenforce 0ve uygulamanızın daha sonra çalışıp çalışmadığına bakın.

Vb politikaları güncelleyeceğiz, açılışta SELinux'un modunu ayarlayarak dosyaları veya dizinleri yeniden etiketlenmesi dahil kalıcı düzeltme için SELinux üzerinde dağıtımın kılavuzuna İşte bakınız Pratik Bilgiler CentOS için .


2

Tüm SElinux'u değiştirmek her zaman doğru cevap değildir. Ben bir uzman değilim ama bir bağlantı noktası erişilebilir değilse güvenlik duvarını devre dışı bırakma ile karşılaştırmak istiyorum.

Diğer hızlı çözüm, özellikle bir yerden kopyalanıyorsa dosyaların "SE bağlamını geri yüklemek" olabilir.

Daha fazla bilgi için bkz. Https://www.thegeekstuff.com/2017/05/restorecon-examples/ .

Bunlar SElinux'u devre dışı bırakmadan önce denemeye değer komutlar

sudo restorecon  /etc/nginx/conf.d/
sudo restorecon  /etc/nginx/conf.d/*

Bu komut bana verirFull path required for exclude: net:[...].
Nakilon

0

Selinux'u devre dışı bırakmaktan daha iyi bir yol, komutu kullanmaktır

semanage permissive -a httpd_t

Bu, burun nginx servisinin selinux'u tamamen devre dışı bırakmadan geçmesine izin verecektir

Https://www.nginx.com/blog/using-nginx-plus-with-selinux/ hakkında daha fazla bilgi

Ancak benim için çalışan command chcon -v --type=httpd_sys_content_t /etc/nginx/*ve httpd_t excempt gerek kalmadan düzgün çalıştı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.