अनुमतियाँ समस्या: मेरे होम निर्देशिका में Apache फ़ाइलों तक कैसे पहुँच सकते हैं?


33

मुझे पता है कि फ़ाइल अनुमतियां पहले भी यहां पर कवर की जा चुकी हैं, लेकिन मेरे परिदृश्य के लिए अवधारणा के आसपास अपना सिर पाने के लिए संघर्ष कर रहा हूं।

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

इसे ठीक करने के प्रयास में, मैंने मान लिया कि उन्हें अभी भी पिछले मालिक के स्वामित्व में होना चाहिए, इसलिए मैंने chown -Rनिर्देशिका में अपने उपयोगकर्ता नाम के साथ एक तर्क के रूप में, निर्देशिका में सभी फ़ाइलों के स्वामित्व को लेने के लिए भाग लिया। यह ध्यान दिया जाना चाहिए कि नए और पुराने ubuntu प्रतिष्ठानों के बीच उपयोगकर्ता नाम समान थे।

जब मैं फ़ाइलों को फिर से चलाने का प्रयास करता हूं, तो एक ही समस्या: अनुमतियों की समस्याओं के कारण 500 त्रुटि। क्या कोई मुझे बता सकता है कि मुझे और क्या कदम उठाने चाहिए?

मेरी अपाचे स्थापना के लिए वेबरोट मेरे होम फ़ोल्डर के अंदर है। अगर मैं अपने वेबरूट में नई फाइलें बनाता हूं, तो वे भी उम्मीद के मुताबिक काम करते हैं, केवल वही पुरानी फाइलें जो समस्या पैदा कर रही हैं।


मुझे यकीन नहीं है कि फ़ाइल की अनुमति होने पर फ़ाइल अनुमतियाँ कॉपी की जाती हैं, क्या कोई इसकी पुष्टि कर सकता है? अन्यथा, क्या फ़ाइलों को किसी अन्य उपयोगकर्ता (या रूट) को देना संभव होगा, और फिर उन्हें पुनः प्राप्त करना होगा?
टैगर

ठीक है, मैंने फ़ाइलों को निष्पादित नहीं करने की मेरी समस्या को हल किया है, लेकिन मैंने इसे केवल chmod -R 777 dirसवाल पर निर्देशिका में चलाकर किया है। मैं यह सोचने में मदद नहीं कर सकता कि इसे करने का एक बेहतर तरीका है
रिचजिला

3
एक फ़ाइल में 777 अनुमतियां हर किसी को आपकी फ़ाइलों को लिखने की अनुमति देंगी जिसके परिणामस्वरूप आपके पृष्ठों को नुकसान हो सकता है या हैकिंग हो सकती है। आपको 755 के साथ प्रयास करना चाहिए जो आमतौर पर php फ़ाइलों के लिए उपयोग किया जाता है। सुनिश्चित करें कि आपको किसी फ़ाइल के लिए "अनुमति दें" को सक्षम करने की आवश्यकता नहीं है, जिस स्थिति में आप chmod [फ़ाइल नाम] -x चला सकते हैं। अगले लिंक पर क्लिक करके chmod कमांड के बारे में जानकारी प्राप्त की जा सकती है: catcode.com/teachmod/chmod_cmd.html
Geppettvs D'Constanzo

अपाचे त्रुटि लॉग क्या दिखाता है?
कीस कुक

जवाबों:


14

अपाचे निर्देशिका में उतरने की अनुमति देने के लिए आपके वेबरोट से ऊपर की निर्देशिकाओं में निष्पादन बिट सेट होना चाहिए।

आप अपने webroot पर स्थित है /home/user/htdocs, /, /home, /home/userऔर /home/user/htdocsअमल बिट निर्धारित करना चाहिए।


उपरोक्त समाधान "काम करता है", लेकिन यह आदर्श नहीं है। यदि आपने एक फ़ोल्डर बनाया है, तो Apache उस पर नहीं लिख सकता है। उल्टा भी होता है।

यह umask 0007 सेट करके और अपाचे समूह (www- डेटा अगर मैं गलत नहीं हूं) से खुद को जोड़कर "तय" किया जा सकता है, ताकि समूह द्वारा नई बनाई गई फाइलें और फ़ोल्डर्स लेखन योग्य हों।

वैकल्पिक रूप से, आप एक वैकल्पिक अपाचे MPM: Apache2 MPM ITK ( कॉन्फ़िगर करने पर जानकारी ) स्थापित कर सकते हैं और कॉन्फ़िगरेशन को समायोजित कर सकते हैं ताकि Apache आपके उपयोगकर्ता के अंतर्गत चलता हो।


यह स्पष्ट करने के तरीके के बारे में स्पष्ट निर्देशों के लिए नीचे
हॉब्स

2
@ हब्स और भी बेहतर, askubuntu.com/a/46371/6969
लेकेन्स्टाइन

44

यदि आपके सर्वर दस्तावेज /home/$USER/public_htmlनिर्देशिका में हैं, तो आपको चलाने की आवश्यकता है

sudo chown -R www-data:www-data /home/$USER/public_html

उपयोगकर्ता www-dataऔर समूह को DocumentRoot फ़ोल्डर का स्वामित्व देने के लिए www-data

फिर आप अपने आप को समूह में जोड़ सकते हैं www-data

sudo adduser $USER www-data

अंत में, आपको मालिक (www-data उपयोगकर्ता) और अपने स्वयं के ( www-dataसमूह के भाग के रूप में) DocumentRoot फ़ोल्डर को लिखने योग्य बनाने की आवश्यकता है :

sudo chmod -R 775 /home/$USER/public_html

सुविधा के लिए आप public_html_fix.shसामग्री के साथ स्क्रिप्ट नाम बना सकते हैं :

#!/bin/bash

sudo adduser $USER www-data
sudo chown -R www-data:www-data /home/$USER/public_html
sudo chmod -R 775 /home/$USER/public_html

इसे अंदर सहेजें /home/$USER/binऔर उपयोग करके इसे निष्पादन योग्य बनाएं:

sudo chmod +x /home/$USER/bin/public_html_fix.sh

फिर आप इसे जब भी जरूरत हो, उस फाइल सिस्टम पर जहाँ भी आप अपने आप को इस तरह से पाते हैं:

public_html_fix.sh

1
मेरे लिए काम किया ....
Emmanuel Okeke

बहुत बढ़िया जवाब! - उदाहरण और यहां तक ​​कि एक स्क्रिप्ट और उत्कृष्ट का उपयोग / स्थापित करने के लिए कैसे!
आंद्रे

2
यदि यह एक साझा होस्ट पर किया जाता है, तो आप www-dataसमूह के अन्य उपयोगकर्ताओं को आपकी फ़ाइलों को पढ़ने, या उस मामले के लिए लिखने से कैसे रोक सकते हैं ?
jozxyqk

वास्तव में भयानक जवाब ... आपने मेरी जान बचाई
NullPoiиteя

1
chmod -R 775 /home/$USER/public_htmlवास्तव में भयानक। find /home/$USER/public_html -type d -exec chmod 775 {} \;और find /home/$USER/public_html -type f -exec chmod 664 {} \;बहुत बेहतर है
iharob

1

फ़ाइलों को चोदने और अपाचे .conf फ़ाइलों को संपादित करने के अलावा, मैं यह कहना चाहता हूं कि मेरे लिए कुछ भी काम नहीं किया क्योंकि मेरी फाइलें एक विभाजन पर थीं जो मैंने नॉटिलस के माध्यम से ऑटो-माउंट की थीं। यह आपके उपयोगकर्ता के लिए विभाजन को सीमित करता है।

यह जाँचने के लिए कि क्या आपकी फाइलें www-rootया जो भी उपयोगकर्ता अपाचे चलाता है ( ps -aux | grep apache2जांचने के लिए) चलता है, निम्न कमांड चलाएं:

sudo su -l www-data -s /bin/bash

और अपने दस्तावेज़ रूट से एक फ़ाइल को पढ़ने का प्रयास करें।

यदि फ़ाइल पढ़ने योग्य नहीं है तो जाँच करें:

1) आपने अन्य सभी फ़ाइल अनुमतियां सेट कर दी हैं

2) आप FollowSymlinksअपनी .confफ़ाइलों में उपयोग किया है अगर जरूरत है

3) आपने DocumentRoot की स्थापना की है

3) सभी उपयोगकर्ताओं के लिए अपने विभाजन को माउंट करें। मुझे /etc/fstabअपना विभाजन इसके UUID के माध्यम से संपादित और निर्दिष्ट करना था :

UUID=afdee1d3-5bb8-4652-892f-e83a9b5ff72e /mnt/4tb      ext4    rw,nosuid,nodev,errors=remount-ro

फिर नॉटिलस के माध्यम से अपने विभाजन को अनमाउंट करें और ए करें sudo mount -a। अगर सब ठीक हो जाता है तो आपकी फाइलें अब नीचे हैं /mnt। अपने सिम्बल को अपडेट करें और आप जाने के लिए अच्छे हैं।


1

सबसे अच्छा तरीका है जो मैंने हमेशा इसे स्थापित करने के लिए पाया है, जिस तरह से VirtualMin करता है।

उपयोगकर्ता और समूह बनाएं "myhome"

अपाचे उपयोगकर्ता को "myhome" समूह का सदस्य बनाएं। इस तरह के कुछ स्पष्टीकरणों के बारे में अन्य तरीके से नहीं

तो अब अपाचे ने / home / myhome / www के अलावा / home / myhome तक पहुंच को पढ़ा और निष्पादित किया है

"myhome" उपयोगकर्ता के पास पहुंच है


मुझे यह अवधारणा पसंद है, लेकिन यह मेरे लिए काम नहीं करता है। उपयोगकर्ता www-dataसमूह से संबंधित है myhome। सभी फ़ाइलों और निर्देशिकाओं में समूह लिखने की अनुमति है और संबंधित हैं myhome:myhome। मैंने अपाचे को फिर से शुरू किया। Apache अभी भी नई फ़ाइलें और फ़ोल्डर्स नहीं लिख सकती है। (Www-data: www-data उपयोगकर्ता / समूह का उपयोग करके PHP स्क्रिप्ट)
sqcandy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.