2011-09-11 14 views
75

मुझे उबंटू पर अपाचे स्थापित करने में कुछ परेशानी हो रही है। मैं this guide का पालन कर रहा हूं।अपाचे सिम्लिंक का पालन नहीं करेगा (403 निषिद्ध)

# /usr/sbin/apache2 -v 
Server version: Apache/2.2.17 (Ubuntu) 
Server built: Feb 22 2011 18:33:02 

मेरे सार्वजनिक निर्देशिका,/var/www, सफलतापूर्वक सेवा और PHP पृष्ठों है कि यह में रखा जाता है निष्पादित कर सकते हैं। हालांकि, मैं/var/www में एक सिम्लिंक बनाना चाहता हूं जो मेरे घर फ़ोल्डर में एक निर्देशिका को इंगित करता है और वहां पृष्ठों की सेवा करता है।

[root /var/www]# ll 
total 36 
drwxr-xr-x 3 root root 4096 2011-09-11 14:22 . 
drwxr-xr-x 14 root root 4096 2011-06-04 22:49 .. 
lrwxrwxrwx 1 root root 16 2011-09-11 13:21 about -> /root/site/about 

मैं उपयोग करने के लिए प्रयास करते हैं/के बारे में ब्राउज़र पर, मैं

Forbidden 

You don't have permission to access /about on this server. 

जहाँ तक के रूप में मैं जानता हूँ कि, मैं फ़ाइलों को मैं सेवा करना चाहते के लिए पर्याप्त विशेषाधिकार दिया:

[root ~/site/about]# ll 
total 24 
drwxr-xr-x 5 root root 4096 2011-09-11 13:20 . 
drwxr--r-- 3 root root 4096 2011-09-11 13:19 .. 
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 contact 
-rwxr-xr-x 1 root root 1090 2011-09-11 13:19 index.php 
drwxr-xr-x 2 root root 4096 2011-09-11 13:20 me 
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 resume 

मुझे फॉलोसिमलिंक्स विकल्प से अवगत है, और मेरा मानना ​​है कि यह मेरे/etc/apache2/साइट-सक्षम/000-डिफ़ॉल्ट फ़ाइल में सेट है:

DocumentRoot /var/www 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /var/www/> 
    Options FollowSymLinks Indexes MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 

कोई विचार क्या मैं खो सकता है?

उत्तर

112

जांचें कि अपाचे के पास /root, /root/site और /root/site/about के लिए अधिकार अधिकार हैं।

रन:

chmod o+x /root /root/site /root/site/about 
+8

धन्यवाद एक बहुत ... मैं माता पिता निर्देशिका नहीं पता था भी निष्पादन योग्य होना ही था। – Tim

+31

खैर, मैं यह नहीं कह रहा कि यह काम नहीं करेगा लेकिन सामान्य रूप से, ओ + एक्स ऑन/रूट देना एक अच्छा विचार नहीं है;) –

+10

मीकल सही है। मैंने पाया कि मैं एसीएल (कम से कम मैक में) का उपयोग कर सकता हूं: 'chmod -R + a "_www सूची, खोज, readattr"/root/root/site/root/site/about' की अनुमति देता है, जो उन अनुमतियों को अनुदान देता है * बस * अपाचे ऐप (_www), जो "अन्य" से थोड़ा सुरक्षित है। –

7

मुझे एक ही समस्या थी कि मैं अपने नए सर्वर पर लंबे समय तक हल नहीं कर सका। Palacsint के जवाब के अलावा, पूछने के लिए एक अच्छा सवाल यह है: क्या आप अपाचे 2.4 का उपयोग कर रहे हैं? अपाचे 2.4 में उपरोक्त कॉन्फ़िगरेशन का उपयोग करते समय किए गए अनुमतियों को सेट करने के लिए एक अलग तंत्र है, इसलिए मैंने solution explained in this blog post का उपयोग किया।

Alias /demo /usr/demo/html 

<Directory "/usr/demo/html"> 
    Options FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    allow from all 

</Directory> 

लिए:

Alias /demo /usr/demo/html 

<Directory "/usr/demo/html"> 
    Options FollowSymLinks 
    AllowOverride None 
    Require all granted 
</Directory> 

नोट कैसे आदेश और लाइनों ने ले ली है की अनुमति देते हैं

मूल रूप से, मैं क्या करने की जरूरत से मेरी कॉन्फ़िग फ़ाइल कन्वर्ट था सभी अनुमोदित

+0

ध्यान दें कि आदेश/अनुमति/अस्वीकार आदेश अभी भी अधिकांश कंप्यूटरों पर उपलब्ध हैं। नए संस्करणों में, इसे 'access_compat' मॉड्यूल में लागू किया गया है। यदि वह मॉड्यूल सक्षम है, तो पहला भाग अपेक्षा के अनुसार काम करने की संभावना नहीं है। यदि यह वहां नहीं है, तो Apache2 को शुरू करने का प्रयास त्रुटियों के साथ विफल होना चाहिए। –

4

इस सवाल से संबंधित, मैंने अभी यह पता लगाया कि मेरा vhost मुझे 403 क्यों दे रहा था।

मैंने इस प्रश्न पर अन्य संभावनाओं और भाग्य के बिना अन्य संभावनाओं का परीक्षण किया था। यह लगभग मुझे पागल ड्राइव करता है।

मैं सिंप्रिंक के माध्यम से कैपिस्ट्रानो मार्ग के समान रिलीज के साथ एक सर्वर स्थापित कर रहा हूं और जब मैंने डॉक्रूट फ़ोल्डर (जो अब वर्तमान रिलीज फ़ोल्डर के लिए सिमलिंक है) तक पहुंचने का प्रयास किया है तो उसने मुझे 403 दिया।

मेरे vhost है:

DocumentRoot /var/www/site.com/html 
<Directory /var/www/site.com/html> 
     AllowOverride All 
     Options +FollowSymLinks 
     Require all granted 
</Directory> 

और अपने मुख्य httpd.conf फ़ाइल (डिफ़ॉल्ट अपाचे 2.4 स्थापित) था:

DocumentRoot "/var/www" 
<Directory "/var/www"> 
    Options -Indexes -FollowSymLinks -Includes 
(...) 

ऐसा लगता है कि मुख्य विकल्प परिभाषा पर पूर्वता ले रहा था मेरी vhosts fiel (मेरे लिए काउंटर अंतर्ज्ञानी है)। तो मैंने इसे बदल दिया है:

DocumentRoot "/var/www" 
<Directory "/var/www"> 
    Options -Indexes +FollowSymLinks -Includes 
(...) 

और यूरेका! (MAIN httpd.conf फ़ाइल में FollowSymLinks से पहले प्लस साइन पर ध्यान दें। आशा है कि यह किसी अन्य खोए हुए आत्मा की मदद करे।

+0

अपाचे 2.4 में, आपका समाधान कॉन्फ़िगरेशन को अमान्य कर देगा और httpd प्रारंभ करने में विफल रहेगा, क्योंकि आप एक विकल्प लाइन में '+' और '-' को गठबंधन नहीं कर सकते हैं। – deesto

0

एक और तरीका है कि प्रतीकात्मक लिंक आपको विफल कर सकते हैं, जैसा कि मैंने अपनी स्थिति में खोजा था। अगर आपके पास SELinux है सर्वर के रूप में सिस्टम और प्रतीकात्मक लिंक एक एनएफएस-घुड़सवार फ़ोल्डर को इंगित करते हैं (अन्य फाइल सिस्टम समान लक्षण पैदा कर सकते हैं), httpd गलत संदर्भ देख सकते हैं और लक्षित फ़ोल्डरों की सामग्री को प्रस्तुत करने से इंकार कर सकते हैं।

मेरे मामले में /var/www/html (जिसे आप ls -Z के साथ प्राप्त कर सकते हैं) के SELinux संदर्भ unconfined_u:object_r:httpd_sys_content_t:s0 है। /var/www/html में प्रतीकात्मक लिंक समान संदर्भ होंगे, लेकिन उनके लक्ष्य का संदर्भ होगा, एक एनएफएस-घुड़सवार फ़ोल्डर होने के नाते, system_u:object_r:nfs_t:s0 हैं।

समाधान fscontext=unconfined_u:object_r:httpd_sys_content_t:s0mount विकल्पों (उदा। # mount -t nfs -o v3,fscontext=unconfined_u:object_r:httpd_sys_content_t:s0 <IP address>:/<server path> /<mount point>) में जोड़ने के लिए है। rootcontext अप्रासंगिक है और defcontext एनएफएस द्वारा अस्वीकार कर दिया गया है। मैंने खुद ही context का प्रयास नहीं किया।

0

पहले अक्षम SELinux (vim/etc/SELinux/config)

vim /etc/httpd/conf/httpd.conf संपादित सिमलिंक के लिए लाइनों और निर्देशिका अनुक्रमण निम्नलिखित:

documentroot /var/www/html 
<directory /var/www/html> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
</directory> 

तो .htaccess फ़ाइल को अनुमति दें सभी

11

403 त्रुटि एन्क्रिप्टेड फ़ाइल सिस्टम के कारण भी हो सकती है, उदाहरण के लिए एक एन्क्रिप्टेड होम फ़ोल्डर पर एक सिम्लिंक।

यदि आपका सिम्लिंक एन्क्रिप्टेड फ़ोल्डर में इंगित करता है, तो अपाचे उपयोगकर्ता (उदा। Www-data) सामग्री तक नहीं पहुंच सकता है, भले ही अपाचे और फ़ाइल/फ़ोल्डर अनुमतियां सही ढंग से सेट हों। www-डेटा उपयोगकर्ता इस तरह के एक कॉल के साथ परीक्षण किया जा सकता का प्रवेश:

sudo -u www-data ls -l /var/www/html/<your symlink>/ 

समाधान/इस के लिए समाधान है, उदा रहे हैं www-data उपयोगकर्ता को अपने निजी समूह (वेब ​​उपयोगकर्ता को एन्क्रिप्टेड डेटा का खुलासा करता है) या एक अनएन्क्रिप्टेड rsynced फ़ोल्डर (संभवतः सुरक्षित) स्थापित करके उपयोगकर्ता को जोड़ना। मैं खुद के लिए विकास के दौरान शायद एक rsync समाधान के लिए जाना होगा।

https://askubuntu.com/questions/633625/public-folder-in-an-encrypted-home-directory

एक सुविधाजनक उपकरण मेरी प्रयोजनों के लिए lsyncd है। यह मुझे सीधे मेरे एन्क्रिप्टेड होम फ़ोल्डर में काम करने की अनुमति देता है और अपाचे वेब पेज में लगभग तुरंत परिवर्तन देखने में सक्षम होता है। सिंक्रनाइज़ेशन फ़ाइल सिस्टम में बदलावों से ट्रिगर होता है, जो rsync को कॉल करता है।चूंकि मैं केवल छोटे वेब पृष्ठों और स्क्रिप्ट पर काम कर रहा हूं, सिंकिंग बहुत तेज है। मैंने rsync शुरू होने से पहले 1 सेकंड की छोटी देरी का उपयोग करने का निर्णय लिया, भले ही 0 सेकंड की देरी सेट करना संभव हो।

स्थापित कर रहा है lsyncd (उबंटू में):

sudo apt-get install lsyncd 

पृष्ठभूमि सेवा शुरू:

lsyncd -delay 1 -rsync /home/<me>/<work folder>/ /var/www/html/<web folder>/ 
+2

'sudo -u www-data ... 'यह जांचने का एक शानदार तरीका है कि कोई अनुमति समस्या है या नहीं! ध्यान दें कि उपयोगकर्ता आपके डिस्ट्रो के आधार पर www-data, apache, या कुछ और हो सकता है। – mkasberg

+0

आखिरकार अरघ! मैं पहले से ही अपनी सबसे बुनियादी क्षमताओं पर संदेह कर रहा था! – kalabalik

+0

इस के लिए खोए गए घंटे और अंत में यह एन्क्रिप्शन था! – myol

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