2012-09-13 11 views
7

मेरे अपाचे त्रुटि लॉगकैसे फ़ाइलों को अपाचे "पढ़ने के लिए नहीं खोल सकता" त्रुटि लॉग में निर्धारित करने के लिए

Error opening file for reading: Permission denied 
Error opening file for reading: Permission denied 
Error opening file for reading: Permission denied 

आदि से भरा हुआ है

मैं फ़ाइल या फ़ाइलों का फ़ोल्डर है कि कैसे निर्धारित कर सकते हैं इस अनुमति त्रुटि के कारण? त्रुटियों और access_log अनुरोधों के बीच कोई सीधा संबंध नहीं है।

Googling suggests मैं strace का उपयोग करना चाहिए लेकिन जब मैं

strace apache2 

या

strace -etrace:open apache2 

कर प्रतिक्रिया वर्बोज़ है और जब से मैं वास्तव में सफलतापूर्वक से पहले इस उपकरण का उपयोग नहीं किया है, मैं कर रहा हूँ पता नहीं कि क्या देखना है। यहां दिखाई देने का एक निशान है।

..... 
open("/lib/x86_64-linux-gnu/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3 
open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3 
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3 
apache2: bad user name ${APACHE_RUN_USER} 

अंतिम पंक्ति में केवल एक ही है कि लगता है यह कारण हो सकता है, लेकिन मेरे वेबसर्वर प्रसंस्करण छवियों, और डिस्क सामान के सभी प्रकार है कि एक समस्या हो सकता है अगर अपाचे उपयोगकर्ता के लिए पर्याप्त नहीं था।

धन्यवाद।

उत्तर

2

मैं स्ट्रेस के बारे में बहुत जानकार नहीं हूं, लेकिन मुझे लगता है कि आपको अपाचे को चलाने के लिए कुछ अन्य चीजें करने की आवश्यकता होगी।

यदि आप अभी apache2 बाइनरी चलाते हैं, तो आपका प्रोग्राम खराब उपयोगकर्ता नाम के साथ रुक जाएगा (जैसा कि आपने नोट किया था) क्योंकि आमतौर पर अपाचे उपयोगकर्ता नाम/समूह कॉन्फ़िगरेशन के हिस्से के रूप में सेट किया जाता है (/ etc/apache2/envvars में उबंटू 12.04 स्थापना)।

जो मैंने पाया वह सबसे आसान था मेरी मशीन पर apachectl स्क्रिप्ट ढूंढना, और "शुरूआत" के लिए खोजना।

$HTTPD ${APACHE_ARGUMENTS} -k $ARGV

आप अपने strace यहां जोड़ सकते हैं ताकि यह लग रहा है कर सकते हैं जैसे:

strace -etrace:open -f $HTTPD ${APACHE_ARGUMENETS} -k $ARGV

आप -f विकल्प शामिल करने के लिए के रूप में अपाचे अंडे की जरूरत होगी आप एक लाइन की तरह लग रहा है कि मिल जाएगा कई प्रक्रियाएं और आप उन्हें सबसे अधिक संभावनाओं का पता लगाना चाहते हैं, कम से कम यह मेरे लिए काम करता है :)

+0

हाय क्रिस, आपके उत्तर के लिए धन्यवाद। मैंने उस समय अप-वोट करने की उपेक्षा की, और ईमानदारी से याद नहीं कर सकता कि समस्या क्या है, न ही समाधान अब था !! –

0

आपको open() पर कॉल देखने की आवश्यकता है जिसके परिणामस्वरूप वापसी होगी मान -1, errno == EACCES।

strace -o /tmp/strace.log -e trace=open -f $HTTPD ${APACHE_ARGUMENTS} -k $ARGV 

-o भंडार एक फ़ाइल में उत्पादन:

मैं ubuntu पर निम्नलिखित strace कमांड लाइन (/ usr/sbin/apachectl में) tweak करना पड़ा। यदि आप सभी के द्वारा पठनीय क्षेत्र में फ़ाइल नामों को लीक करने के बारे में चिंतित हैं तो उपयुक्त गंतव्य निर्देशिका का उपयोग करें।

मैं अपाचे मोड wsgi में चल रहे एक अजगर प्रोग्राम के साथ एक समान बग का पीछा कर रहा हूं। मुझे ये मिल रहा है ...

3556 open("/proc/self/auxv", O_RDONLY) = -1 EACCES (Permission denied) 

मुझे लगता है कि मेरी बग तथ्य यह है कि WSGI वर्कर प्रोसेस एप्लिकेशन चला नियमित उपयोगकर्ता को जड़ से विशेषाधिकार चला जाता है के साथ क्या करना है, लेकिन विशेषाधिकार ड्रॉप के बाद, /proc/self/auxv अभी भी नियमित प्रक्रियाओं के लिए पढ़ने योग्य नहीं रह जाता है। -- शायद।

संबंधित मुद्दे