मैं 777 / var / www के सभी सबफ़ोल्डर्स को कैसे चुन सकता हूं?


54

मैं एक वेबसर्वर और एफ़टीपी सर्वर चला रहा हूं, जिसके /var/wwwलिए बाध्य है /home/user/www

मैंने दोनों निर्देशिकाओं को सेट किया है chmod 777(जो कि केवल परीक्षण के लिए ठीक है)।

मैं फ़ाइलों को अपलोड कर सकता हूं /home/user/www, लेकिन जब भी मैं एक नई निर्देशिका बनाता हूं, मुझे हमेशा chmod 777उस फ़ोल्डर पर चलना पड़ता है।

अन्यथा, जब मैं इसे ब्राउज़ करने का प्रयास करता हूं, तो मुझे त्रुटि संदेश मिलता है

आपको इस सर्वर पर / परीक्षण / उपयोग करने की अनुमति नहीं है।

क्या कोई ऐसा तरीका है जिससे मैं सभी उप-फ़ोल्डर्स /var/wwwको किसी के द्वारा भी सुलभ बना सकता हूं ? या उनकी अनुमतियाँ स्वतः निर्धारित की जा सकती हैं 777? यह कष्टप्रद है कि मुझे chmod 777हर बार टाइप करना पड़ता है ।


12
बस इसे यहां छोड़ने जा रहे हैं कृपया एक वेब सर्वर पर 777 का उपयोग न करें । एक बेहतर सवाल यह है कि "777 अनुमतियों का उपयोग किए बिना मैं अपने वेबसर्वर को कैसे काम कर सकता हूं?"
मार्को Ceppi

12
खेद है कि बुरा व्यवहार है और मैं इस का जवाब देने के लिए मना कर दिया :) आशा eveyone इससे सहमत हैं :)
Rinzwind

जवाबों:


89

यह बुरा अभ्यास है, लेकिन उम्मीद है कि आप सिर्फ विकास के लिए इसका उपयोग कर रहे हैं, या आपके पास एक और अच्छा कारण है। आप -mविकल्प का उपयोग करके निर्देशिका बनाते समय अनुमतियाँ निर्दिष्ट कर सकते हैं :

mkdir -m 777 dirname

या आप पुनरावर्ती रूप से अनुमतियाँ सेट कर सकते हैं।

sudo chmod -R 777 /var/www

इन दोनों में से किसी का भी उपयोग करने से पहले, वास्तव में विचार करें कि क्या आप चाहते हैं कि आपका फाइल सिस्टम इतना सुलभ हो।


संपादित करें: जैसा कि रिनविंड द्वारा उल्लेख किया गया है, आप जो चाहते हैं उसे पूरा करने का एक बेहतर तरीका है।

जाँचें कि कौन सा समूह आपकी /var/wwwनिर्देशिका का मालिक है और अपने उपयोगकर्ता को उस समूह में जोड़ें।

sudo adduser yourusername group

समूह शायद है www-data

फिर आप 775 पर अपनी अनुमतियां सेट करने के साथ ठीक हो जाएंगे।


4
यह वही है जो आपने मांगा है, लेकिन कृपया यह पहले पढ़ें कि क्यों / var / www में chmod 777 नहीं होना चाहिए । यह वास्तव में अनुशंसित अभ्यास नहीं है।
वारेन हिल

8
कृपया ऐसी विधि वाले लोगों की मदद न करें जो बुरी प्रथा है। मैं पसंद करूँगा अगर आप इसे कैसे करें: अपने उपयोगकर्ता को किसी समूह www-data या apache;) में जोड़कर
बताएं

4
शिक्षा पहले आती है। लोगों को अपनी मशीन खराब करने में मदद करना लिनक्स का तरीका नहीं है। इसलिए मैं आपसे बहुत असहमत हूं।
रिनविंड

2
पूछने वाले ने कहा कि यह केवल परीक्षण के लिए है। मैं निश्चित रूप से समझ सकता हूं कि आपके विकास पक्ष को आसानी से सुलभ होना चाहिए ताकि आप अधिक तेज़ी से काम कर सकें। मैं उसे संदेह का लाभ देने जा रहा हूं, कि वह प्रोडक्शन सर्वर के साथ ऐसा करने के लिए पर्याप्त मूर्ख नहीं है।
दान

1
@ dan08 आपके घर निर्देशिका का उपयोग करने सहित परीक्षण करने के बेहतर तरीके हैं। देखें askubuntu.com/questions/46331/... और kimbriggs.com/computers/computer-notes/linux-notes/... । इन लक्ष्यों को पूरा करने के सुरक्षित तरीके हैं;)
पैंथर

7

यूनिक्स में फ़ाइलों और निर्देशिकाओं में तीन प्रकार की अनुमतियाँ हो सकती हैं: पढ़ना ( r), लिखना ( w), और निष्पादित करना ( x)। प्रत्येक अनुमति उपयोगकर्ताओं की तीन श्रेणियों में से प्रत्येक के लिए onया हो सकती है off: फ़ाइल या निर्देशिका स्वामी; मालिक के रूप में एक ही समूह में अन्य लोग; और अन्य सभी। किसी फ़ाइल का मोड बदलने के लिए, chmod कमांड का उपयोग करें। सामान्य रूप chmod X @ Y file1 file2 है ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 

4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

अलग-अलग अनुमतियों के साथ सभी फ़ाइलों को बनाने वाली ftp के लिए, आप ftpd के umask की तलाश कर सकते हैं, कि डेमन की शुरुआत कैसे हुई

इस साइट पर एक नज़र डालें https://linuxaria.com/article/linux-shell-understanding-umask-with-examples


1
इसके लिए +1 एकमात्र ऐसा उत्तर है जो केवल फ़ोल्डर्स को अपडेट करता है और फाइलों को नहीं
jmyszkier

3

सार्वजनिक सेवा घोषणा:


समस्याओं को ठीक करने के लिए कभी भी chmod 777 का उपयोग न करें


  • यदि आप जनता के लिए उपलब्ध कोई भी सेवा चलाते हैं, तो यह एक बड़ा सुरक्षा जोखिम है, विशेषकर वेब एप्लिकेशन (जैसे PHP)।

    OS का सुरक्षा मॉडल मानता है कि कई सेवाएं (जैसे आपका वेब सर्वर) कम विशेषाधिकारों के साथ चलती हैं, ताकि उन्हें फ़ाइलों को संशोधित करने में सक्षम बनाया जा सके। फ़ाइलों पर 777 सेट करने से यह डिज़ाइन टूट जाता है।

    एक दूरस्थ उपयोगकर्ता फ़ाइलों को लिख या अपलोड कर सकता है और फिर उन्हें पढ़ने या निष्पादित करने में सर्वर (या आपके सिस्टम पर कुछ अन्य प्रक्रिया) को धोखा दे सकता है। स्क्रिप्ट या सॉफ़्टवेयर में ऐसी खामियाँ हो सकती हैं जो इसकी अनुमति देती हैं। यदि विश्व-लेखन योग्य निर्देशिकाएं हों, तो हर एक तरीके को बंद करना बहुत मुश्किल है।

  • कुछ सिस्टम निर्देशिकाओं (/ usr, / etc, / var, और इसी तरह) में उपयोग किया जाता है, यह आपके सिस्टम को आश्चर्यजनक तरीके से तोड़ सकता है।

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

  • इसे पूर्ववत करने और सभी पुरानी अनुमतियों को वापस पाने का कोई तरीका नहीं है।

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

  • हमेशा वह हासिल करने का एक और अधिक उपयुक्त तरीका है जिसे आप प्राप्त करना चाहते हैं।

इस मामले में, ऐसा लगता है कि आप केवल अपने वेब सर्वर को एक निर्देशिका पढ़ने में सक्षम होना चाहते हैं । विश्व-योग्य अनुमति देने का तरीका आपके द्वारा किए जाने से अधिक है।

नीचे ट्रैक करें कि वेब सर्वर उस निर्देशिका को क्यों नहीं पढ़ सकता (संकेत: यह शायद इसलिए है क्योंकि आपके घर की निर्देशिका विश्व-पठनीय नहीं है। विश्व-पठनीय विश्व-लेखन से बहुत अधिक सुरक्षित है - अपने घर की निर्देशिका को 755, या कुछ की तरह सेट करें। उस www dir को अपने घर के बाहर कहीं जैसे / var / www या / srv) में स्थानांतरित करें।



0

यदि आप किसी अन्य फ़ाइल से अनुमतियाँ या स्वामित्व की प्रतिलिपि बनाना चाहते हैं, जिससे आप संतुष्ट हैं, तो आप ऐसा कर सकते हैं sudo chmod --reference = path / to / file / to / reference path / to / file / you / want / करने के लिए / परिवर्तन / permissino / करने के लिए

और आप फ़ाइल स्वामित्व के लिए भी यही काम कर सकते हैं।

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