मैं फ़ाइलों और निर्देशिकाओं की अनुमतियों को कैसे पुन: बदल सकता हूं?


65

मेरे पास अपने स्थानीय कंप्यूटर पर Apache / php / mysql के साथ ubuntu स्थापित है।

अब मेरे पास / var / www पर एक निर्देशिका है, जिसके अंदर मेरे पास मेरे कई प्रोजेक्ट हैं। मैं ओपनसोर्स (ड्रुपल, मैगेंटो, गन्ना) के साथ भी काम करता हूं।

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

sudo chmod 777 foldername

मैं इसे पुनरावर्ती कैसे कर सकता हूं।

इसके अलावा मुझे हमेशा 777 क्यों करना पड़ता है , मैंने फ़ोल्डर्स के लिए 755 और फ़ाइलों के लिए 644 की कोशिश की , लेकिन यह काम नहीं करेगा।

जवाबों:


90

बस जोड़ने -Rरिकर्सिवली फ़ाइलों की अनुमतियों को परिवर्तित करने के लिए विकल्प। एक उदाहरण, मालिक और समूह के लिए पठन और लेखन अनुमतियाँ जोड़ने पर foldername:

chmod -R ug+rw foldername

अनुमतियां 664 या 775 जैसी होंगी।

अनुमतियों को 777 पर सेट करना अत्यधिक हतोत्साहित करता है । आपको अनुमतियों के संबंध में अपाचे या आपके संपादक में त्रुटियां मिलती हैं क्योंकि अपाचे www-dataआपसे भिन्न उपयोगकर्ता ( ) के तहत चलता है ।

यदि आप लिखना चाहते हैं /var/www, तो अपने आप को www-dataसमूह में जोड़ें और अपने अनुसार umask + अनुमतियाँ सेट करें।

  • अपने आप को www-dataसमूह में जोड़ें :sudo adduser $USER www-data
  • फाइलों का स्वामित्व बदलें /var/www:sudo chown -R www-data:www-data /var/www
  • ओमास्क बदलें, इसलिए अपाचे अनुदान द्वारा नई बनाई गई फाइलें समूह को भी अनुमति देती हैं। जोड़े umask 007को /etc/apache2/envvars
  • अपने आप को अनुदान दें (तकनीकी रूप से, समूह www-data) अनुमतियाँ लिखें sudo chmod -R g+w /var/www:।

हाँ, मैं गलत स्थान पर r झंडा जोड़ रहा था, मैं इसे ch +od के लिए o + w के बाद जोड़ रहा था।
जॉनमेर्लिनो

इसके अलावा, यदि आप chmod -r blablabla(-R के बजाय छोटे -r) का उपयोग करने का प्रयास करते हैं, तो आप सभी के लिए पठन अनुमतियाँ हटा सकते हैं ...
सिरिल डचोन-डोरिस

1
इन निर्देशों के बाद, यह जांचना एक अच्छा विचार है कि .htaccessअपाचे के लिए लिखने की अनुमति वाली कोई फाइल नहीं है । find /var/www/ | grep .htaccess | xargs ls -l
रेनॉल्डस्लैप

23

पाशविक बल:

sudo find foldername -exec chmod a+rwx {} ";"

क्या काम नहीं करता है? थोड़ा और विस्तार में बताओ!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"

जब आप फ़ोल्डर के अंदर हों, तो "foldername" हटा दें
Enrique

4
... और इसे बदलें।
djjeck

4

आपको किसी भी चीज के लिए 777 की जरूरत नहीं होनी चाहिए। सबसे खराब स्थिति, आपको कुछ फ़ाइलों और निर्देशिकाओं के स्वामी को "www-data" उपयोगकर्ता में बदलना होगा।

sudo find /var/www -type d -print0 | xargs -0 chmod 755
sudo find /var/www -type f -print0 | xargs -0 chmod 644
sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data

यदि आप Lekensteyn की समूह सदस्यता विधि का उपयोग कर रहे हैं, तो ऊपर दिए गए क्रमशः 755 से 775 और 644 से 664 बदल दें, और फिर समूह की चिपचिपाहट को मजबूर करें:

sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s

3

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

यहाँ छवि विवरण दर्ज करें


LANG=C [command]अंग्रेजी अनुवाद प्राप्त करने के लिए उपयोग करें ।
लीकेनस्टाइन

1

यदि आप चाहते हैं कि आपकी सभी फाइलें दुनिया के लिए पठनीय हों (यानी यह HTML फ़ाइलों / छवियों का सिर्फ एक स्थिर सेट है), तो इस कमांड का उपयोग करें:

chmod -R a+r <base directory>

यह पुनरावृत्ति सभी फ़ाइलों और उपनिर्देशिकाओं के माध्यम से जाएगा और उन्हें पढ़ने की अनुमति जोड़ देगा।

चेतावनी : निष्पादन योग्य फ़ाइलों के लिए ऐसा न करें! केवल फाइलें जो हर किसी को दिखनी चाहिए।


क्या आप कह रहे हैं " chmod -R a+xकुछ भी मत करो ", या " chmod -R a+rनिष्पादन योग्य पर मत करो "?
aleclarson

मैंने ठीक कर दिया। बाद में सच है। अपने द्वारा बनाए गए निष्पादन योग्य लोगों तक दूसरों की पहुँच की अनुमति देने में सावधानी बरतें।
रियान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.