"प्रतीकात्मक लिंक की अनुमति नहीं है या लिंक लक्ष्य सुलभ नहीं है" / CentOS 6 पर अपाचे


30

मुझे एक नया CentOS 6 इंस्टॉलेशन मिला है, जिसमें डॉक्यूमेंट रूट में सिमिलिंक है मेरी डेवलपमेंट फाइल्स के लिए:

[root@localhost html]# ls -l
total 4
-rwxrwxrwx. 1 root root  0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/

मेरे httpd.conf के पास यह है:

<Directory "/">
    Options All
    AllowOverride None
    Order allow,deny
    Allow from all
</directory>

प्रतीकात्मक लिंक के लक्ष्य के पास अनुमतियाँ हैं जो अपाचे को अपनी इच्छानुसार कुछ भी पढ़ने की अनुमति देनी चाहिए:

 [root@localhost billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app

मैंने भी बदलकर SELinux को निष्क्रिय करने का प्रयास किया है /etc/selinux/conf:

SELINUX=disabled

फिर भी कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, जब कोई उस लिंक पर जाने की कोशिश करता है http://localhost/refresh-app/, तो मुझे एक 403 फॉरबिडेन एरर पेज मिलता है और इसमें लिखा होता है /var/log/httpd/error_log:

Symbolic link not allowed or link target not accessible

Apache सिम्लिंक के लक्ष्य तक क्यों नहीं पहुंच सकता है?


क्या उपयोगकर्ता एपाचे के रूप में चल रहा है? क्या आप वास्तव में उस संसाधन को उस उपयोगकर्ता के रूप में पढ़ सकते हैं?
draeath

साथ ही, आप बेहतर तरीके से अनुमेय मोड में सेलिनक्स चलाना बंद कर रहे हैं और फिर ऑडिट लॉग को पार्स करने के लिए सीलेंट का उपयोग कर रहे हैं - इससे आप देख सकते हैं कि SELinux इसे क्यों और कैसे मना कर रहा है और अक्सर आपको एक संकल्प भी देता है।
draeath

@draeath: मुझे नहीं पता कि इसके लिए कैसे जांच करनी चाहिए।
बिली ओपल

@ नीचे: 1. यह एक उत्पादन बॉक्स नहीं है; मुझे परवाह नहीं है अगर SELinux बंद है। 2. किसी भी मामले में, मैं इस बिंदु पर सिर्फ समस्या निवारण कर रहा हूं - एक बार मूल कारण का पता लगाने के बाद मैं इसे फिर से बहाल करूंगा।
बिली ओपल

चिंता करने की बात नहीं है कि यह एक आम ओवरसाइट है, पहली बार मैंने ऐसा किया था कि मैं दिनों के लिए अटक गया था, serverfault.com/questions/313485/… :: इसकी उन त्रुटियों में से एक। : D
whoami

जवाबों:


44

मुद्दा मिल गया। पता चला है, अपाचे बस नहीं निर्देशिका मैं की सेवा कर रहा हूँ करने के लिए उपयोग करना चाहता है, /home/billy/refresh-app/, लेकिन यह भी कि, अर्थात् ऊपर हर निर्देशिका /home/billy/, /home, और /। (मुझे नहीं पता कि क्यों ... किसी को उपनिर्देशिका तक पहुंच प्रदान करने के लिए उस उपनिर्देशिका से ऊपर की सभी चीजों को अनुमति देने की आवश्यकता नहीं होनी चाहिए ....)

मुझे लगता है कि यह .htaccessया कुछ और की तलाश में है, या शायद * nix के बारे में अजीब हो रहा है कि यह कैसे निर्देशिका ट्रांसवर्सल के लिए अनुमतियों का व्यवहार करता है।


15
यह अजीब नहीं है। यह वैसे काम करता है। आपके पास उस संपूर्ण पथ के लिए + x होना चाहिए जिस तक आप पहुँचने का प्रयास कर रहे हैं।
bahamat

4
@ नौबत: इसका कोई मतलब नहीं है। फ़ाइलों को निष्पादित न करने के लिए किसी को विशेषाधिकारों को निष्पादित करने की आवश्यकता क्यों होगी? (यह पूरी तरह से छूट कि एक को दूर करने का अधिकार नहीं होना चाहिए /... बहुत ज्यादा) ACLs के साथ सिस्टम में आमतौर पर एक अलग निर्देशिका ट्रांसक्रिप्ट विकल्प होता है। आपको लगता है कि 30 साल बाद यूनिक्स डिजाइन किया गया था, और ACL सिस्टम की व्यापक उपलब्धता है, कि ACLs मानक होगा। : आह:
बिली ओपल

11
मेरा मानना ​​है कि वह निर्देशिका पर + x का मतलब है। निर्देशिका w / o + x उपयोगकर्ता और cd-ing में स्विच करने का प्रयास करें। मेमोरी + x से आप एक्सेस कर सकते हैं, लेकिन डायरेक्टरी को नहीं देख सकते हैं जबकि + r आपको फ़ाइलों को सूचीबद्ध करने की अनुमति देता है और + w आपको डायरेक्टरी में फाइल बदलने की अनुमति देता है

1
@ बिलियन: वाक्यांश "संपूर्ण पथ" का तात्पर्य निर्देशिकाओं से है।
bahamat

5
यह यूनिक्स में सही व्यवहार है। आपको मूल निर्देशिकाओं पर विशेषाधिकारों (जी या ओ के लिए x) को निष्पादित करने की आवश्यकता है जो आप उनके नीचे उप-निर्देशिकाओं में बदलने की कोशिश कर रहे हैं।
slm

11

मेरे पास एक समान समस्या थी जहां मेरे पास निम्न कॉन्फ़िगरेशन था जो Ubuntu 10 के साथ काम करता था, लेकिन Ubuntu 14 (Apache 2.4) के साथ काम करना बंद कर दिया:

<Directory /var/www/vhosts/example.com/httpdocs>
    Options +FollowSymLinks
</Directory>

इस पर स्विच करने से समस्या हल हो गई (भले ही वेब सर्वर उपयोगकर्ता सीधे सिमलिंक तक पहुंचने में सक्षम नहीं था)

<Directory /var/www/vhosts/example.com/httpdocs>
    Options +ExecCGI +FollowSymlinks -SymLinksIfOwnerMatch
</Directory>

क्या मैं इसकी बस -SymLinksIfOwnerMatchसेटिंग बता सकता हूं और अपाचे 2.4 में बदलाव के साथ कुछ करना है, लेकिन मैंने सटीक कारण पर शोध करने की कोशिश नहीं की है।

मैंने यह भी सोचा कि यह openbase_dirPHP में प्रतिबंध के लिए नीचे हो सकता है लेकिन ऐसा नहीं था।


6

यदि आप किसी एन्क्रिप्टेड फ़ोल्डर से लिंक कर रहे हैं तो यह त्रुटि भी हो सकती है।


4

ऐसा प्रतीत होता है "FollowSymLinks" httpd.conf में आपके लिए आवश्यक विकल्प है। यह यहाँ विस्तृत है । लगता है कि आपको htdocs में भी एक नियम की आवश्यकता हो सकती है ... लेकिन यह आपके लिए आवश्यक विकल्प है।


3
देखें Options All- FollowSymLinksपहले से ही निर्दिष्ट है।
बिली ओपल

2

आप यह भी जांचना चाह सकते हैं कि क्या सेलिनक्स लागू है या नहीं। RedHat / Fedora पर, इसे निष्पादित करें:

getenforce

यदि प्रतिक्रिया 'लागू करना' है, तो आप निष्पादित करना चाह सकते हैं

setenforce 0

और अपने ब्राउज़र में फिर से url आज़माएं।

ध्यान दें कि मैं यह नहीं कह रहा हूं कि इस समस्या को हल करने के लिए सेलेनक्स को निष्क्रिय करना सबसे अच्छा तरीका है, लेकिन यह कारण की पहचान करने में मदद कर सकता है।


यह सिम्पल लिंक समस्या को ठीक करता है लेकिन क्या इसका कोई नकारात्मक प्रभाव है?
digz6666

2
Options +FollowSymLinks

इसके साथ एक .htaccess फ़ाइल बनाएं, मेरे लिए यह चाल चली (इसे सिर्लिंक से पहले dir में डालें)।


मेरे मामले में, मैं /var/wwwएक अन्य मध्यवर्ती प्रतीकात्मक लिंक का प्रतीकात्मक लिंक बना रहा था । यदि आपको प्रतीकात्मक लिंक का उपयोग करना चाहिए, तो इसे अपने गंतव्य के लिए प्रतीकात्मक लिंक बनाएं।
श्रीधर सरनोबत

0

सभी अनुमति देने के बाद मेरी समस्या का समाधान क्या है और इस प्रकार की अनुमति दें "FollowSymLinks के मामले में विशेष रूप से यह एक .conf फ़ाइल के भीतर निर्देशिका संरचना के अंदर होना चाहिए। अपाचे वर्तमान मैनुअल से।

FollowSymLinks और SymLinksIfOwnerMatch विकल्प केवल अनुभागों या .htaccess फ़ाइलों में काम करते हैं।

यहाँ से जवाब दो


0

मेरा समाधान नामित सभी रिपॉजिटरी के लिए एक साझा फ़ोल्डर बनाना था /home/repo

फिर मेरे अपने घर से सहानुभूति जैसे: ln -s /home/repo ~/Code तो ~/Code/www.xxxx.com/public इंगित करता है /home/repo/www.xxxx.com/public

और यह भी अपाचे वेब रूट /var/www/html बिंदुओं में एक कड़ी है /home/repo/www.xxxx.com/public

इसे यहां मिला: https://github.com/alaganmi/ubuntu-desktop_setup/wiki/Git-Local-Repository-Setup-Guide

कुछ सिम्लिंक + उपयोगकर्ता समूहों के एक्रोबेसी के साथ आपके पास कई उपयोगकर्ता / संस्करण तैनात हो सकते हैं।


0

@ बेली ओनील @ फीलियन मैं लाइन में जवाब नहीं दे सकता था (कम प्रतिनिधि गणना)
यहां मुझे करना था:
( नोट: उर्फ ll = 'ls $ LS_OPTIONS -lh')

root@Bellach:/var/www/html# ll lego
lrwxrwxrwx 1 root root 43 Sep 10 21:21 lego -> /home/DATA/Documents/Chris/Synced/web/lego/

अब हर निर्देशिका को स्रोत लिंक में देखें

root@Bellach:/var/www/html# ll -d /home/DATA/Documents/Chris/Synced/web/
drwxr-xr-x 9 chris chris 4.0K Sep 12  2017 /home/DATA/Documents/Chris/Synced/web/
root@Bellach:/var/www/html# ll -d /home/DATA/Documents/Chris/Synced/
drwxr-xr-x 20 chris chris 4.0K Mar 27 18:52 /home/DATA/Documents/Chris/Synced/
root@Bellach:/var/www/html# ll -d /home/DATA/Documents/Chris/
drwxr-xr-x 36 chris chris 4.0K Jun 17 23:31 /home/DATA/Documents/Chris/
root@Bellach:/var/www/html# ll -d /home/DATA/Documents/
drwxr-xr-x 21 chris chris 4.0K Aug  7 18:22 /home/DATA/Documents/
root@Bellach:/var/www/html# ll -d /home/DATA/
drwxrwxr-- 10 root users 4.0K Sep 10 11:17 /home/DATA/
root@Bellach:/var/www/html# ll -d /home/
drwxr-xr-x 5 root root 4.0K Sep 10 10:37 /home/

/ घर / डेटा निर्देशिका अपराधी है।
इसे इसके साथ ठीक करें:

root@Bellach:/var/www/html# chmod +x /home/DATA/
root@Bellach:/var/www/html# ll -d /home/DATA/
drwxrwxr-x 10 root users 4.0K Sep 10 11:17 /home/DATA/

फिक्स तत्काल है - अपाचे को पुनरारंभ करने की कोई आवश्यकता नहीं है।


-1

आप अपनी SELinux सेटिंग्स को भी समायोजित कर सकते हैं, और setenforce आपके पथ पर नहीं हो सकता है। तो यह प्रयास करें:

sudo /usr/sbin/setenforce 0

और इसे रिबूट के बीच बनाए रखने के लिए

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