नेग्नेक्स कहता है खुला () "/etc/nginx/conf.d/foo.conf" विफल (13: अनुमति अस्वीकृत)


11

यहाँ मेरे पास है 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

क्या गलत है?


2
SELinux लागू किया गया? क्या ls -lZदिखाता है? कोशिश करो setenforce 0और देखो अगर यह काम करता है।
ययागशी

वास्तव में, setenforce 0मदद की। कृपया, इसे एक उत्तर के रूप में प्रस्तुत करें, मैं इसे स्वीकार करूंगा
yegor256

जवाबों:


19

जब आपको permission deniedअज्ञात कारण से फ़ाइल एक्सेस आदि में त्रुटियां हो रही हैं, तो यह SELinux से संबंधित हो सकता है। विशेष रूप से जब आप फ़ाइल के लिए drwxr-xr-x.दिखाए गए अनुमतियों की तरह एक अवधि देखते हैं ls -l/ सवाल में बताए जाते हैं, तो उन्हें गुमराह किया जा सकता है (आप इसे देख सकते हैं ls -Z) और समस्या का कारण बन सकते हैं ।

आपको पहले चालू SELinux मोड की जांच करनी चाहिए getenforce। यदि यह कहता है Enforcing, तो अस्थायी रूप Permissiveसे चलाकर मोड सेट करें setenforce 0, और देखें कि आपका एप्लिकेशन बाद में काम करता है या नहीं।

अपनी वितरण के यहाँ, शुरू पर SELinux मोड सेट फाइल या निर्देशिका relabeling, नीतियां अपडेट, आदि सहित स्थायी ठीक, के लिए SELinux पर गाइड देखें CentOS के लिए Howto


2

पूरे सेलाइनक्स को बदलना हमेशा सही जवाब नहीं होता है। मैं एक विशेषज्ञ नहीं हूं, लेकिन अगर पोर्ट सुलभ नहीं है तो मैं इसकी तुलना फ़ायरवॉल को अक्षम करने से करूंगा।

अन्य त्वरित समाधान फाइलों के "एसई संदर्भ को बहाल करना" हो सकता है, खासकर यदि वे कहीं से कॉपी किए जाते हैं।

अधिक विवरण के लिए https://www.thegeekstuff.com/2017/05/restorecon-examples/ देखें ।

ये Selinux को निष्क्रिय करने से पहले प्रयास करने के लायक हैं

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

यह आदेश मुझे देता हैFull path required for exclude: net:[...].
नैकिलोन

0

सेलिनक्स को अक्षम करने से बेहतर तरीका है कमांड का उपयोग करना

semanage permissive -a httpd_t

यह पैर की अंगुली की नसबंदी सेवा को पूरी तरह से सेलेनक्स को निष्क्रिय किए बिना पारित करने की अनुमति देगा

Https://www.nginx.com/blog/use-nginx-plus-with-selinux/ पर अधिक जानकारी

हालाँकि मेरे लिए दौड़ना command chcon -v --type=httpd_sys_content_t /etc/nginx/*और httpd_t को बाहर निकालने की आवश्यकता के बिना ठीक से काम करना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.