linux - मैं लिनक्स उबंटू टर्मिनल में फ़ोल्डर और उसके सभी सबफ़ोल्डर और फ़ाइलों के लिए chmod कैसे सेट करूं?




permissions folder (11)

क्या chmod 755 को /opt/lampp/htdocs लिए सेट करने का कोई तरीका है और इसकी सभी सामग्री सबफ़ोल्डर और फ़ाइलों सहित?

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

यह काम करता है, लेकिन केवल इस फ़ोल्डर के लिए:

chmod 775 /opt/lampp/htdocs

-आर विकल्प की जांच करें

chmod -R <permissionsettings> <dirname>

भविष्य में, आप पहले मैन पेज को चेक करके बहुत समय बचा सकते हैं:

man <command name>

तो इस मामले में:

man chmod

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

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

सभी निर्देशिकाओं को 755 ( drwxr-xr-x ) में बदलने के लिए:

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

सभी फ़ाइलों को 644 ( -rw-r--r-- ) में बदलने के लिए:

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

आप यह सुनिश्चित करना चाहते हैं कि उचित फाइलें और निर्देशिकाएं उन के लिए chmod-ed / अनुमतियां उचित हों। आप चाहते हैं कि सभी निर्देशिकाओं के लिए

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

और सभी छवियों, जावास्क्रिप्ट, सीएसएस, एचटीएमएल के लिए ... अच्छा, आपको उन्हें निष्पादित नहीं करना चाहिए। तो उपयोग करें

chmod 644 img/* js/* html/*

लेकिन सभी तर्क कोड (उदाहरण के लिए PHP कोड) के लिए, आपको अनुमतियां सेट करनी चाहिए ताकि उपयोगकर्ता उस कोड को नहीं देख सके:

chmod 600 file

आप सभी फ़ाइलों और उपफोल्डर्स के रिकर्सिव ट्रैवर्सल के लिए chmod के साथ -R उपयोग कर सकते हैं।

आपको सूडो की आवश्यकता हो सकती है क्योंकि यह वर्तमान उपयोगकर्ता द्वारा स्थापित LAMP पर निर्भर करता है या दूसरा:

sudo chmod 755 -R /opt/lampp/htdocs

निर्देशिका को 775 पर सेट करने और फ़ाइलों को 664 पर सेट करने का एक और तरीका है।

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

यह लंबा लग सकता है, लेकिन यह तीन कारणों से बहुत अच्छा है:

  1. फाइल सिस्टम के माध्यम से केवल दो बार बजाए एक बार स्कैन करता है।
  2. फ़ाइलों को कैसे प्रबंधित किया जाता है, इस पर बेहतर नियंत्रण प्रदान करता है कि निर्देशिका कैसे प्रबंधित की जाती है। चिपचिपा बिट जैसे विशेष मोड के साथ काम करते समय यह उपयोगी होता है, जिसे आप शायद निर्देशिकाओं पर लागू करना चाहते हैं लेकिन फाइल नहीं।
  3. सीधे man पेजों से बाहर एक तकनीक का उपयोग करता है (नीचे देखें)।

ध्यान दें कि मैंने इस समाधान के बीच प्रदर्शन अंतर (यदि कोई है) की पुष्टि नहीं की है और केवल दो खोज आदेशों (जैसे पीटर मोर्टेंसन समाधान में) का उपयोग करना है। हालांकि, मैनुअल में एक समान उदाहरण देखकर उत्साहजनक है।

man find से पृष्ठ man find उदाहरण:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

चियर्स


फाइल ढूंढने और उन्हें chmod लगाने के दो जवाब हैं। सबसे पहले फ़ाइल मिलती है और इसे पामोड लागू होता है जैसा कि यह पाता है (जैसा कि @WombleGoneBad द्वारा सुझाया गया है)।

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

दूसरा समाधान find कमांड वाली सभी फाइलों की सूची उत्पन्न करना है और इस सूची को chmod कमांड (जैसा कि @lamgesh द्वारा सुझाया गया है) को आपूर्ति करना है।

chmod 755 $(find /path/to/base/dir -type d)

इन दोनों संस्करणों में तब तक अच्छा काम होता है जब तक find कमांड द्वारा लौटाई गई फाइलों की संख्या कम होती है। दूसरा समाधान आंखों के लिए बहुत अच्छा लग रहा है और पहले की तुलना में अधिक पठनीय है। यदि बड़ी संख्या में फाइलें हैं, तो दूसरा समाधान त्रुटि देता है: Argument list too long.

तो मेरा सुझाव है

  1. यदि आप एक ही समय में सभी फाइलों और निर्देशिकाओं की अनुमतियां बदलना चाहते हैं तो chmod -R 755 /opt/lampp/htdocs उपयोग करें।
  2. find /opt/lampp/htdocs -type d -exec chmod 755 {} \; यदि आप जिन फ़ाइलों का उपयोग कर रहे हैं, उनकी संख्या बहुत बड़ी है। -type x विकल्प केवल विशिष्ट प्रकार की फ़ाइल के लिए खोज करता है, जहां निर्देशिका खोजने के लिए डी का उपयोग किया जाता है, फ़ाइल के लिए एफ और लिंक के लिए एल।
  3. अन्यथा chmod 755 $(find /path/to/base/dir -type d)
  4. किसी भी स्थिति में पहले का उपयोग करने के लिए बेहतर है

मैक ओएस एक्स 10.7 (शेर) के लिए, यह है:

chmod -R 755 /directory

और हाँ, जैसा कि अन्य सभी कहते हैं, ऐसा करने पर सावधान रहें।


यदि आप सभी फ़ाइलों पर a+r पर अनुमतियां सेट करना चाहते हैं, और सभी निर्देशिकाओं को a+x सेट करना चाहते हैं, और पूर्ण उपनिर्देशिका पेड़ के माध्यम से इसे फिर से करें, तो इसका उपयोग करें:

chmod -R a+rX *

X (वह पूंजी X , छोटा x नहीं!) फ़ाइलों के लिए अनदेखा किया जाता है (जब तक वे पहले से किसी के लिए निष्पादन योग्य नहीं होते) लेकिन निर्देशिकाओं के लिए उपयोग किया जाता है।


सभी सबफ़ोल्डर (रिकर्सिवली) उपयोग -आर पर सेट करने के लिए

chmod 755 /folder -R

और डिफॉल्ट को नए फ़ोल्डर / फाइलों को सीडी / फ़ोल्डर umask 755 पर सेट करने के लिए उमास्क का उपयोग करें


सही रिकर्सिव कमांड है:

sudo chmod 755 -R /opt/lampp/htdocs

-R : मौजूदा फ़ोल्डर सहित प्रत्येक उप फ़ोल्डर को बदलें


chmod 755 -R /opt/lampp/htdocs पुनरावर्ती अनुमतियों को सेट करेगा। अनुमतियों को सेट करने के बाद बनाए गए केवल इस निर्देशिका में स्वचालित रूप से फ़ाइलों के लिए अनुमतियां सेट करने का कोई तरीका नहीं है, लेकिन आप umask 022 सेट करके अपनी सिस्टम-व्यापी डिफ़ॉल्ट फ़ाइल अनुमतियां बदल सकते हैं।







chmod