किसी निर्देशिका की सभी फ़ाइलों और फ़ोल्डरों की अनुमतियों को 644/755 पर बदलें


182

मैं कैसे का उपयोग कर 755 करने के लिए 644 करने के लिए सभी फ़ाइलों और सभी फ़ोल्डर बदल जाएगा chmodसे linuxकमांड प्रॉम्प्ट? (टर्मिनल)


6
अगर कोई (@animuson) मुझे समझाने के लिए इतना दयालु होगा, तो क्यों इस chmod सवाल ऑफ टॉपिक है और अन्य सभी (14,438 परिणाम) यहाँ नहीं हैं ...
hugo der hungrige

थोड़ी देर, लेकिन यह एक कमांड एक शॉट में स्वीकृत उत्तर भी करेगा: chmod -R a = r, a + X, u + w / your / path
MichaelICE 5'14

अच्छा सवाल, बंद करने लायक नहीं है। इन्हें बंद करने के बजाय स्टैकओवरफ्लो उप साइट पर ले जाना चाहिए।
एरिक फ्राइसन

1
@hugoderhungrige इसका मतलब है कि इसे सर्वर साइट पर पूछें जैसे http://superuser.com: P लेकिन इस सवाल ने मुझे यहाँ मदद की, धन्यवाद।
भावुकता

3
संक्षिप्त उत्तर:chmod -R u+rwX,go+rX,go-w /foo
kenorb

जवाबों:


343

एक दृष्टिकोण खोज का उपयोग किया जा सकता है:

निर्देशिका के लिए

find /desired_location -type d -print0 | xargs -0 chmod 0755

फ़ाइलों के लिए

find /desired_location -type f -print0 | xargs -0 chmod 0644

21
सिर्फ मेरे जैसे किसी और के लिए, यह sudo find /your/location -type f -exec chmod 644 {} \;फाइलों के लिए और sudo find /your/location -type d -exec chmod 755 {} \;निर्देशिकाओं के लिए प्रयास करने के बजाय काम नहीं करता है
NineCattoRules

मैंने मूल समाधान चलाया और इसने फाइलों और निर्देशिकाओं में मेरी अनुमति को गड़बड़ कर दिया। ध्यान रहे! टिप्पणी पर समाधान काम किया, धन्यवाद!
महसा मुर्तज़ावी

3
क्यों?) यह बेहतर थाम है chmod -R a=r,u+w,a+X /foo?
पीटर क्रस

विफल रहता हैunable to execute /bin/chmod: Argument list too long
vladkras

क्या होगा अगर मैं वांछित सब_क्लोकेशन निर्दिष्ट करते समय केवल सबफ़ोल्डर को chmod 755 होना चाहिए? क्योंकि इससे पैरेंट फोल्डर 755
MaXi32

105

सबसे आसान तरीका है:

chmod -R u+rwX,go+rX,go-w /path/to/dir

जिसका मूल अर्थ है:

करने के लिए chAnge फ़ाइल modes -Rदेकर ecursively:

  • uसेवा: read, wसंस्कार और ई Xएक्यूट अनुमतियाँ,
  • group और other उपयोगकर्ता: read और e Xecute अनुमतियां, लेकिन -wअनुष्ठान अनुमति नहीं ।

कृपया ध्यान दें कि Xनिर्देशिका को निष्पादन योग्य बना देगा, लेकिन फ़ाइल नहीं, जब तक कि यह पहले से ही उपलब्ध / निष्पादन योग्य न हो।

+X - किसी के द्वारा पहले से ही खोजे जाने योग्य / निष्पादन योग्य होने पर, सभी के द्वारा एक निर्देशिका या फ़ाइल को खोजने योग्य / निष्पादन योग्य बनाना।

कृपया man chmodअधिक जानकारी के लिए जाँच करें ।

यह भी देखें: फ़ाइलों को छोड़कर सभी निर्देशिकाओं को कैसे दोबारा तैयार करें (पुनरावर्ती)? SU पर


7
chmod -R a = r, u + w, a + X / foo
जॉन ऑलसअप

9
यह उत्तर, जबकि साफ-सुथरा है, एक समस्या है: कमांड चलाने से पहले निष्पादन योग्य एक फ़ाइल बाद में निष्पादन योग्य होगी। @JohnAllsup का उत्तर उस कमांड के लिए देखें जिसमें यह दोष नहीं है।
mzuther

4
जब तक यह समस्या वास्तव में आपके लिए नहीं है तब तक @mzuther
रियाद

37

सबसे छोटा मैं साथ आ सकता है:

chmod -R a=r,u+w,a+X /foo

जो GNU / Linux पर काम करता है, और मैं सामान्य रूप से Posix पर विश्वास करता हूं (मेरे पढ़ने से: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html )।

यह क्या है:

  1. फ़ाइल को सेट करें / निर्देशिका r__r__r__ (0444) के लिए
  2. स्वामी के लिए w जोड़ें, rw_r__r__ (0644) प्राप्त करने के लिए
  3. सभी के लिए सेट निष्पादित करें यदि एक निर्देशिका (dir के लिए 0755, फ़ाइल के लिए 0644)।

महत्वपूर्ण रूप से, चरण 1 अनुमति सभी निष्पादित बिट्स को साफ करती है, इसलिए चरण 3 केवल निर्देशिकाओं के लिए निष्पादन बिट्स को जोड़ता है (कभी भी फाइल नहीं)। इसके अलावा, सभी तीन चरण एक निर्देशिका में पुनरावृत्त होने से पहले होते हैं (इसलिए यह उदाहरण के बराबर नहीं है

chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo

चूँकि a = r, निर्देशिकाओं से x को हटाता है, इसलिए तब chmod उनमें पुनरावृत्ति नहीं कर सकता है।


प्रतिभाशाली! मेरी बहुत मदद की
Jannie Theunissen


12

पर https://help.directadmin.com/item.php?id=589 वे लिखते हैं:

यदि आपको अपने public_html डेटा को निर्देशिकाओं के लिए 755 और फ़ाइलों के लिए 644 पर रीसेट करने के लिए एक त्वरित तरीके की आवश्यकता है, तो आप कुछ इस तरह का उपयोग कर सकते हैं:

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

मैंने परीक्षण किया और ... यह काम करता है!


जीवन रक्षक! इस मुद्दे के स्वच्छ समाधान के लिए धन्यवाद! जब वर्डप्रेस इंस्टाल के लिए परमिशन की समस्या को ठीक करने की जरूरत हो तो मेरे लिए काम किया!
ट्विनकैब

एक निर्देशिका के भीतर समायोजन करने के लिए अच्छी तरह से काम करता है।
क्रिश्चियन बेरेन्ट

8

यह मेरे लिए काम किया:

find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

3
सावधान रहें: ये कमांड उनके नाम के रिक्त स्थान वाली फाइलों या निर्देशिकाओं को नहीं संभालेंगे। स्वीकृत उत्तर में आदेश होंगे।
चाड नूइस

1
यह चेतावनी केवल लागू होती है, अगर {} उद्धरणों से घिरा नहीं है ... इस प्रकार, प्रिंट 0 और xargs -0 के साथ खेलने का कोई कारण नहीं है, तो निम्नलिखित लक्षण हैं:find /A -type X -exec chmod Y '{}' \;
माइकल स्टंपफ्ल

6

दोनों एक ही पास में करें:

find -type f ... -o -type d ...

जैसा कि, टाइप करें f या टाइप d, और फाइल्स के लिए पहला ... और दूसरा ... dirs के लिए। विशेष रूप से:

find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

--changesयदि आप चाहते हैं कि इसे चुपचाप काम करने के लिए छोड़ दें ।


2

यदि आपको अपने public_html डेटा को निर्देशिकाओं के लिए 755 और फ़ाइलों के लिए 644 पर रीसेट करने के लिए एक त्वरित तरीके की आवश्यकता है, तो आप कुछ इस तरह का उपयोग कर सकते हैं:

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

इसके अतिरिक्त, यदि आप जानते हैं कि PHP उपयोगकर्ता के रूप में चलता है और "अपाचे" के रूप में नहीं, तो आप अतिरिक्त सुरक्षा के लिए PHP फ़ाइलों को 600 पर सेट कर सकते हैं, जैसे:

find . -type f -name '*.php' -exec chmod 600 {} \;

आप यहाँ इस आवर्ती को पा सकते हैं: https://help.directadmin.com/item.php?id=589


-9

यह भी काम कर सकता है:

chmod -R 755 *  // All files and folders to 755.

chmod -R 644 *.*  // All files will be 644.

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