2011-11-07 8 views
16

मैं मैक दुनिया में नया हूं और बस अपना वेबसर्वर स्थापित कर रहा हूं। मैंने निम्नलिखित मार्गदर्शिका का उपयोग किया: http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installerविशेषाधिकार लिखें - लोकलहोस्ट - मैक ओएसएक्स

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

मैं मैन्युअल रूप से नहीं जा सकता और प्रत्येक फ़ाइल/फ़ोल्डर के लिए इन लेखन विशेषाधिकारों को सक्षम नहीं कर सकता। मुझे डब्ल्यूएएमपी का उपयोग करके ऐसा करने की ज़रूरत नहीं थी और विकास को बहुत तेज बना दिया।

तो लगभग 2 संभव समाधान सोच: क) स्थानीय होस्ट के लिए एक श्वेत सूची करने के लिए अपने उपयोगकर्ता खाते जोड़ सकते हैं ताकि 644 विशेषाधिकार पर्याप्त ख) लिखने के विशेषाधिकार रिकर्सिवली

उत्तर

39

मुझे पता चला कि अपाचे उपयोगकर्ता और समूह सेटिंग्स को बदलने का सबसे अच्छा समाधान था। निर्देश पर पाया जा सकता है: http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. टर्मिनल खोलें और

    User _www 
    Group _www 
    

    से

    sudo nano /private/etc/apache2/httpd.conf 
    
  2. ढूँढें दर्ज करें और करने के लिए कोड http.conf बदलने

    User your_mac_username 
    Group staff 
    

    नोट: डब्ल्यू पहले के संस्करण जैसे तेंदुए, कर्मचारियों को कर्मचारियों को पूंजीकृत करें। आप "आईडी" टाइपिंग और टर्मिनल में प्रवेश मार

  3. पुनः प्रारंभ अपाचे

    sudo apachectl restart 
    
+0

सबसे आसान समाधान! उपयोगकर्ता और अपाचे दोनों को अनुमतियों को बदले बिना लिखने/पढ़ने की अनुमति मिलती है ;-) –

+0

यह क्यों है] समूह को कर्मचारियों के रूप में रखना महत्वपूर्ण है? मैं लिनक्स पर और मैक पर काम करता हूं, लिनक्स पर समूह उपयोगकर्ता नाम है लेकिन मैक पर मुझे इसे काम करने के लिए कर्मचारियों को बाहर करना पड़ा अन्यथा अपाचे शुरू नहीं होगा। –

+0

मैकोज़ सिएरा में अपग्रेड करने से http_.conf में '_www' और '_www' में' ''' 'समूह' मानों को ओवरराइट करें। आपके उत्तर ने मुझे 'उपयोगकर्ता' और इन नए मानों के समूह 'प्रश्न में निर्देशिका के मालिक को सेट करके सामना करने वाली अनुमति समस्या को हल करने में मेरी सहायता की। – gmeben

2

मेरा सुझाव है सेटिंग्स लिखें विशेषाधिकार रिकर्सिवली के लिए निर्धारित हैं कि आपका वेब रूट

आप chmod -R 774 /my/web/root का उपयोग कर कंसोल/टर्मिनल के माध्यम से ऐसा कर सकते हैं। मेरे लिए, मालिक और समूह इस पर सेट है: www-data:myUserName, जिसे chown का उपयोग करके सेट किया जा सकता है। यह जांचना न भूलें कि आपका वेब उपयोगकर्ता पहले कौन है।

संपादित करें: बेहतर समझ के लिए, तुम क्यों पहुँच नहीं है: उपयोगकर्ता, समूह, दूसरों:

Chmod 774, प्रत्येक संख्या विशेष अधिकार के लिए खड़ा है। यदि उपयोगकर्ता www-data पर सेट किया गया है और समूह www-data पर है (यूनिक्स सिस्टम पर अधिकांश उपयोगकर्ता ऐसे समूह में हैं जो उनके उपयोगकर्ता नाम द्वारा नामित हैं)। इसलिए, यदि आप समूह www-data में नहीं हैं तो आपको या तो इसमें शामिल होना होगा, या आपको मालिक (चोटी) बदलना होगा या आपको अनुमतियां (chmod) बदलनी होगी। अधिक जानकारी के लिए, वहां कई ट्यूटोरियल हैं।

+1

मैं सिर्फ कोशिश की 'आर 774' chmod मेरे साइटों में से एक के लिए है और यह पूरी साइट मना किया जब तक मैं इस्तेमाल किया बना' chmod आर 777' जो सही प्रतीत नहीं होता है। कोई विचार? इसके अलावा मुझे नहीं पता कि मेरा वेब उपयोगकर्ता कौन है, यह जांचने के लिए कि क्या आप कृपया समझा सकते हैं? –

+0

आपको फ़ाइल के मालिक को भी जांचना होगा (इसके लिए उपयोगकर्ता ls -l)। अधिकतर फ़ोल्डरों को 'www-data: www-data' पर सेट किया जाता है। जिसका अर्थ है, आप का उल्लेख नहीं किया गया है और जब तक आप 'chmod 777' का उपयोग नहीं करते हैं तब तक आपके पास पहुंच नहीं है। अंतिम 7 "दूसरों" के लिए खड़ा है। जैसा कि मैंने अपने उत्तर में बताया है मालिक को बस सेट करें। मैं थोड़ा और समझाने के लिए अपना जवाब संपादित करूंगा। – sascha

22

मैं उल्लिखित ब्लॉग पोस्ट का लेखक हूं। वेब सर्वर फ़ाइल अनुमतियों के लिए, आप फ़ाइलों के लिए _www उपयोगकर्ता को लेखन पहुंच देना चाहेंगे। config.inc.php लिए, आप इसे स्थापित करेगा कुछ तरीके:

_www फ़ाइल के स्वामी हैं और लिखने की अनुमति है:

$ sudo chown _www config.inc.php 
$ chmod u+w config.inc.php 

अपने उपयोगकर्ता फ़ाइल के स्वामी हैं, समूह _www को बदलने के लिए, है और समूह लिखने की अनुमति दे:

$ sudo chgrp _www config.inc.php 
$ chmod g+w config.inc.php 

या, यदि आप आरामदायक महसूस की इजाजत दी सभी उपयोगकर्ताओं लिखने के लिए है, जो मैं सुरक्षा कारणों के लिए सिफारिश नहीं होगा, सभी उपयोगकर्ताओं लिखने की क्षमता दे:

$ chmod a+w config.inc.php 

एक संपूर्ण फ़ोल्डर _www उपयोगकर्ता द्वारा लिखित किए जाने की आवश्यकता है, यह फ़ोल्डर और सभी फ़ाइलों को ही कर सकते हैं:

$ sudo chown -R _www:_www folder/ 

या आप सभी से फ़ोल्डर लिखने की अनुमति देने के लिए और निष्पादित कर सकते हैं:

$ chmod a+wx folder/ 

कारण chmod 774 ने आपको वर्जित त्रुटियां दीं क्योंकि _www उपयोगकर्ता '4' अनुमति के तहत गिर गया, जो 'केवल पढ़ने के लिए' है। निर्देशिकाओं के लिए, किसी फ़ोल्डर को फ़ोल्डर में जाने के लिए 'execute' की आवश्यकता होती है। chmod 775 उपयोगकर्ता और समूह को rwx, और अन्य को r-x करने की अनुमति देगा।Here's more information on Unix file permissions

इसके अलावा, आपका उपयोगकर्ता पूर्ण स्वामित्व बनाए रख सकता है और एक्सेस कंट्रोल सूचियों का उपयोग करके सभी उपयोगकर्ताओं के लिए पहुंच के स्तर को बदलने के बजाय _www उपयोगकर्ता के लिए कुछ अनुमतियां जोड़ सकता है।

$ sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder 
$ sudo chmod +a '_www allow read,write' config.inc.php 

आप एसीएल के मार्ग से जाने के लिए जा रहे हैं, मैं क्या एक्सेस के स्तर तुम सच में उपलब्ध कराने की आवश्यकता को देखने के लिए कुछ और पढ़ने का सुझाव देते हैं चाहते हैं। Here is a great place to start

+0

अब तक सभी मदद के लिए धन्यवाद। बस सोच रहा हूं कि मैं config.inc.php के मालिक को क्यों बदल दूंगा और मुझे यह कहां मिल सकता है? –

+0

@alanthing आपकी मशीन पर लिखने के लिए अपाचे को अनुमति देने के लिए जोखिम भरा नहीं हो सकता है? – gen

9

मैं पर OSX अपाचे चल रहा हूँ द्वारा अपने उपयोगकर्ता नाम और समूह प्राप्त कर सकते हैं और यह मेरे लिए यह तय:

sudo chown -R _www:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

# 1 अद्यतन:

सिंटेक्स: sudo chown <user>:<group> <file-or-folder>। ओएसएक्स पर अपाचे उपयोगकर्ता _www है।

स्वामित्व रखने के लिए लेकिन अपाचे आर डब्ल्यू-x नियंत्रण दिया जाएगा:

sudo chown -R <your-username>:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

अद्यतन # 2:

मैं इस विधि सबसे ज्यादा पसंद। आप के रूप में चलाने के लिए अपाचे सेट करें।

  1. टर्मिनल प्रकार id में uid=123(Myname) मिलता है।

  2. ओपन /etc/apache2/httpd.conf खोलें और इसे अपने उपयोगकर्ता नाम का उपयोग करने के लिए संपादित करें।

    <IfModule unixd_module> 
        User Myname 
        Group staff 
    </IfModule> 
    
  3. टर्मिनल पर वापस sudo apachectl restart