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




permissions folder (13)

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

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

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

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

chmod 775 /opt/lampp/htdocs

यह बहुत सरल है।

टर्मिनल में फ़ाइल प्रबंधक पर जाएं। उदाहरण: sudo nemo । जाओ /opt/ फिर गुण → अनुमति पर क्लिक करें। और फिर अन्य । अंत में, पढ़ने और लिखने के लिए एसेस बनाने और हटाने के लिए बदलें और बटन पर क्लिक करें ... और काम करें।


chmod -R 755 directory_name काम करता है, लेकिन आप नई फाइलें 755 तक कैसे रखेंगे? फ़ाइल की अनुमतियां डिफ़ॉल्ट अनुमति बन जाती हैं।


निर्देशिका को 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. किसी भी स्थिति में पहले का उपयोग करने के लिए बेहतर है

अन्य उत्तरों सही हैं, उस 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 {} \;

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

chmod -R 755 /directory

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


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

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

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

chmod 644 img/* js/* html/*

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

chmod 600 file


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

sudo chmod 755 -R /opt/lampp/htdocs

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


मुझे लगता है कि एडम पूछ रहा था कि /opt/lampp/htdocs प्रक्रिया /opt/lampp/htdocs निर्देशिका पर काम करने के लिए टाइप करने वाली सभी प्रक्रियाओं के लिए umask मान को कैसे बदला जाए।

उपयोगकर्ता फ़ाइल-निर्माण मोड मास्क (umask) का उपयोग नव निर्मित फ़ाइलों के लिए फ़ाइल अनुमति निर्धारित करने के लिए किया जाता है। इसका उपयोग नई फ़ाइलों के लिए डिफ़ॉल्ट फ़ाइल अनुमति को नियंत्रित करने के लिए किया जा सकता है।

इसलिए यदि आप फ़ाइलों को /opt/lampp/htdocs में अपलोड करने के लिए किसी प्रकार का FTP प्रोग्राम का उपयोग करेंगे, तो आपको अपने ftp सर्वर को umask का उपयोग करने के लिए कॉन्फ़िगर करने की आवश्यकता है।

यदि फाइल / निर्देशिका उदाहरण के लिए php द्वारा बनाई गई है, तो आपको PHP कोड को संशोधित करने की आवश्यकता है

<?php
umask(0022);
// other code
?>

यदि आप अपने बैश सत्र से नई फ़ाइलें / फ़ोल्डर्स बनाएंगे, तो आप अपने खोल प्रोफाइल ~ / .bashrc में umask मान सेट कर सकते हैं या आप सभी उपयोगकर्ताओं के लिए /etc/bashrc या /etc/profile फ़ाइल में umask सेट अप कर सकते हैं। फ़ाइल में निम्नलिखित जोड़ें: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

और पहले से बनाई गई फ़ाइलों के लिए अनुमतियों को बदलने के लिए आप ढूंढ सकते हैं। उम्मीद है की यह मदद करेगा।


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

chmod -R <permissionsettings> <dirname>

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

man <command name>

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

man chmod

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

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

sudo chmod 755 -R /opt/lampp/htdocs




chmod