अनुमतियाँ सेट के साथ भी Apache सिमिलिंक का पालन नहीं करेगी


3

मुझे वेब रूट डायरेक्टरी के बाहर सिम्लिंक का पालन करने के लिए अपाचे नहीं मिल सकते हैं, भले ही अनुमति ठीक लगे और फॉलोस्माइंलिंक चालू हो। विवरण नीचे हैं।

मेरे पास दो विश्व-पठनीय पाठ फ़ाइलें हैं: /tmp/helloऔर /var/www/html/hello। Webroot में भी मुझे उन दोनों फाइलों के लिए सहानुभूति है। दोनों ठीक लग रहे हैं।

$ ll /tmp
drwxrwxrwt. 27 root   root       4096 Jul  8 13:55 ./
dr-xr-xr-x. 23 root   root       4096 Jul  4 23:24 ../
-rw-r--r--.  1 root   root          6 Jul  8 13:55 hello

$ ll /var/www/html
drwxr-xr-x. 3 root   root   4096 Jul  8 13:56 ./
drwxr-xr-x. 6 root   root   4096 Apr  4 12:57 ../
-rw-r--r--. 1 root   root     20 Jul  8 14:03 hello
lrwxrwxrwx. 1 root   root      5 Jul  8 14:04 link-local -> /var/www/html/hello
lrwxrwxrwx. 1 root   root     10 Jul  8 13:56 link-tmp -> /tmp/hello

$ cat /var/www/html/link-local 
/VAR/WWW/HTML/HELLO

$ cat /var/www/html/link-tmp 
/TMP/HELLO

Apache वेब रूट के लिंक का अनुसरण कर सकता है:

$ curl http://localhost/link-local
/VAR/WWW/HTML/HELLO

लेकिन अपाचे सिम्कलिन का पालन नहीं करेगा /tmp/:

$ curl http://localhost/link-tmp
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /hellolink on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at localhost Port 80</address>
</body></html>

यह CentOS 6 पर है; http उपयोगकर्ता अपाचे, समूह अपाचे के रूप में चलता है।

ये क्यों हो रहा है? मेरे द्वारा यह कैसे किया जा सकता है?


आगे के प्रयोग के बाद, मुझे संदेह है कि समस्या कुछ प्रकार की अनुमति समस्या के साथ / tmp / हैलो फ़ाइल पर है। लेकिन मुझे अभी भी विवरण समझ में नहीं आया है।
बेनेट McElwee

जवाबों:


1

हां, ऐसा लगता है जैसे SELinux अपराधी है:

-Z स्विच SELinux सुरक्षा संदर्भों (जैसे, 'ls -Z', 'ps axZ' आदि) को दिखाने के लिए अधिकांश उपयोगिताओं के साथ काम करेगा।

$ ll -Z /var/www/html/hello
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/hello

$ ll -Z /tmp/hello
-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/hello

दो लक्ष्य फ़ाइलों में अलग-अलग प्रकार ( httpd_sys_content_tबनाम user_tmp_t) होते हैं, जो पहुंच में अंतर को बताते हैं।

Centos.org पर SELinux पेज बताते -Zस्विच और बहुत कुछ।


1
खुद के लिए, SELinux अक्षम था, लेकिन स्थिति ने अनुमेय मोड दिखाया। रिबूट के बाद, स्थिति "अक्षम" हो गई थी और मेरे मूल सिमिलिंक कॉन्फिगरेशन ने पहले की तरह काम किया। मेरी यूनिक्स की सभी अनुमतियां सही थीं, लेकिन जाहिर तौर पर अनुमित मोड में भी बेमेल SE सुरक्षा संदर्भ अपाचे को विफल कर देगा।
जिम्प

1

क्या आप .htaccess फ़ाइल में FollowSymlinks सेट कर रहे हैं? या एक <Directory>ब्लॉक में

Apache 2.2 विकल्प प्रलेखन से पता चलता है कि FollowSymlinks केवल इन संदर्भों में काम करेगा - क्या आप प्रासंगिक कॉन्फ़िगरेशन पोस्ट कर सकते हैं?

(टिप्पणी के लिए अपर्याप्त बिंदुओं के कारण उत्तर के रूप में पोस्ट करना)


FollowSymLinks एक <Directory>ब्लॉक में सेट है । ध्यान दें कि Apache link-localसिम्लिंक का अनुसरण करता है , लेकिन link-tmpसमान निर्देशिका में सिमलिंक नहीं ।
बेनेट McElwee

1
यह शायद अंधेरे में एक शॉट है: क्या आपके पास SELinux सक्षम है? कि तुम क्या देख रहे हो कारण हो सकता है ... यह भी, क्या तुमने एक ही चीज का उपयोग कर एक अलियास निर्देश प्राप्त करने की कोशिश की है? httpd.apache.org/docs/2.2/urlmapping.html#outside
एंड्रयू

ऐसा प्रतीत होता है कि SELinux सक्षम है ( getenforceपरिणाम में Enforcing)। मुझे यह देखने के लिए कुछ प्रयोग करने होंगे कि क्या यह कारण है।
बेनेट मैकलेवे जुले

मुझे यकीन है कि मैं ऐसा करने के लिए एक उपनाम का उपयोग कर सकता हूं, लेकिन मेरे लिए एक सिम्बलिंक्स स्पष्ट और अधिक पारदर्शी है - एक सरल ls -lआपको बताएगा कि httpd.conf के माध्यम से देखने के लिए जाने के बजाय फाइलें कहां से सेवा की जा रही हैं। इसके अलावा मैं सिर्फ यह जानना चाहता था कि सिमलिंक काम क्यों नहीं करता है! :)
बेनेट McElwee

2
SELinux के सक्षम होने के कारण यह लगभग निश्चित रूप से है - एक बार आपने इसे निष्क्रिय कर दिया है, तो आपको रिबूट करने की भी आवश्यकता हो सकती है , क्योंकि फ़ाइल सिस्टम को सुरक्षा संदर्भों के साथ आरोहित किया जा सकता है, और केवल सेलिनक्स अनुमेय या अक्षम सेट करने से फ़ाइल ACLs साफ़ नहीं हो सकती है - मैंने ऐसा किया है जो पहले भी हुआ था, और केवल एक रिबूट इसे ठीक करेगा। (मक्खी पर इसे सेट करने के लिए सेटेनफ्रॉप का उपयोग करने का सुझाव देने वाले ऑनलाइन संसाधनों / डॉक्स के बावजूद)
एंड्रयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.