फ़ाइल अनुमतियां कैसे सेट करें ताकि नई फाइलें उसी अनुमतियों को प्राप्त करें? [डुप्लिकेट]


35

इस सवाल का पहले से ही यहाँ एक जवाब है:

मेरे पास एक फ़ोल्डर है जिसमें एक स्क्रिप्ट द्वारा नए सबफ़ोल्डर्स और फाइलें स्वचालित रूप से बनाई जाएंगी।

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

मैंने अब तक यही किया है:

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

इसके बाद, मैं चाहता हूं कि 660 अनुमतियों को किसी भी फ़ोल्डर और फ़ाइलों में पुन: स्थापित किया जाए /path/to/parent

हालाँकि, मैंने अब तक जो भी कोशिश की है वह सब विफल रही है। क्या कोई कृपया मदद कर सकता है?

वास्तव में ऑक्टल झंडा 660 शायद सही भी नहीं है। मुझे जो अनुमति चाहिए वह है:

  1. /path/to/parentअनुमतियों के साथ उपयोगकर्ताओं द्वारा के तहत रखा निर्देशिका eXecutable हैं
  2. फ़ाइलें उपयोगकर्ता द्वारा स्वयं पढ़ी जाती हैं या किसी न किसी समूह के सदस्यों द्वारा लिखी जाती हैं
  3. फ़ाइलें और फ़ोल्डर्स /path/to/parentपढ़ने योग्य नहीं है

मैं Ubuntu 10.0.4 LTS पर चल रहा हूं।

क्या कोई कृपया मदद कर सकता है?

जवाबों:


10

ग्रैविटी एक उत्कृष्ट उत्तर देता है लेकिन मुझे संदेह है कि संपादित प्रश्न ने चीजों को थोड़ा बदल दिया है।

मैं अपाचे उपयोगकर्ता / समूह के स्वामित्व वाली निर्देशिका को छोड़ने का सुझाव दूंगा। यह संभवतः आपके वितरण के आधार पर या तो अपाचे या httpd होगा

जैसे

chown -R apache:apache /path/to/parent

फिर आप https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian जैसे कुछ कर सकते हैं या यहां तक ​​कि खुद को सुनिश्चित करने के लिए अपाचे समूह में खुद को जोड़ सकते हैं। निर्देशिका के लिए समूह का उपयोग किया है। (कुछ usermod -aG apache username)

मैं chmod -Rपूरी निर्देशिका नहीं करूंगा क्योंकि आप HTML स्क्रिप्ट या jpg या यादृच्छिक अन्य चीजों को निष्पादन योग्य नहीं चाहते हैं। आपको आवश्यकतानुसार अनुमति बदलनी चाहिए। (हालांकि इसे 660 पर रीसेट करना विचारों का सबसे बुरा नहीं हो सकता है।)

कुछ तुम कोशिश करना पसंद कर सकते हैं:

chmod o+w file

'ओ' का मतलब 'अन्य' और 'डब्ल्यू' का मतलब 'लिखना' होता है। आपके पास 'उपयोगकर्ता' और 'जी' के लिए 'समूह' के लिए 'यू', और साथ ही 'आर' और 'एक्स' भी हो सकते हैं, जो कि स्पष्ट रूप से आत्म व्याख्यात्मक हैं। आप '+' के बजाय '-' का उपयोग करके अनुमतियां निकाल सकते हैं।


मुझे लगता है कि सबसे सरल समाधान, अपाचे उपयोगकर्ता समूह में खुद को जोड़ना है। सुझाव देने के लिए धन्यवाद। मुझे नहीं पता कि मैंने खुद ऐसा क्यों नहीं सोचा!
oompahloompah

1
क्या o+wयहां अच्छा विकल्प है? क्या परिवर्तन uऔर तक सीमित नहीं होना चाहिए g? अन्यथा, निर्देशिका और उप-निर्देशिकाओं पर सुरक्षा बनाए रखने की कोशिश करने का क्या मतलब है?
jww

61

अनुमति बिट्स आप 0770 और 0660 के लिए देख रहे हैं।

  • rw-अनुमतियाँ → 110बाइनरी → 6ऑक्टल

समूह के स्वामित्व का उपयोग कर setgid बिट की स्थापना द्वारा नई फ़ाइलों और फ़ोल्डरों अपने फ़ोल्डर / path / to / माता-पिता में बनाया द्वारा विरासत में मिला जा सकता है chmod g+sइस तरह:

chmod g+s /path/to/parent

अब, सभी नई फाइलें और फोल्डर / पाथ / टू / पैरेंट के तहत बनाए गए ग्रुप में एक ही ग्रुप असाइन किया जाएगा, जो / पैरेंट / पैरेंट पर सेट है।


POSIX फ़ाइल अनुमतियां विरासत में नहीं मिली हैं; वे बनाने की प्रक्रिया द्वारा दिए गए हैं और इसके वर्तमान umask मूल्य के साथ संयुक्त हैं।

हालाँकि, इसे प्राप्त करने के लिए आप POSIX ACL का उपयोग कर सकते हैं । डिफ़ॉल्ट ACL को एक निर्देशिका पर सेट करें :

setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent

यह लागू होगी setfacl/ path / to / मूल निर्देशिका करने के लिए, -modifying -default एसीएल - कि नए बनाए गए आइटमों को लागू किया जाएगा उन। (अपरकेस का Xमतलब केवल निर्देशिकाओं को ही प्राप्त होगा +x।)

(यदि आवश्यक हो, तो आप ACL में एक u:someuser:rwXया g:someuser:rwX- अधिमानतः एक समूह जोड़ सकते हैं ।)


नोट: ext3 / ext4 का उपयोग करने वाले पुराने सिस्टम पर, आपको aclविकल्प के साथ फाइल सिस्टम को माउंट करने की आवश्यकता होती थी , अन्यथा यह सभी ACL को अनदेखा कर देता था और नए लोगों को सेट करना बंद कर देता था।

mount -o remount,acl /

इसे स्थायी रूप से सेट करने के लिए, उपयोग tune2fs -o acl <device>या संपादित करें /etc/fstab


5
जवाब देने में व़क्त लेने के लिए शुक्रिया। दुर्भाग्य से, मैं इस सब के लिए काफी नया हूं, और आपने जो लिखा है वह ग्रीक से मेरे लिए अप्रभेद्य है (किसी भी ग्रीक SO'ers के लिए क्षमा करें!)। आपने जो लिखा है, उसमें से अधिकांश मुझे समझ में नहीं आया। मेरे पास एक वेब प्रक्रिया है और मैं अपाचे को एक मूल फ़ोल्डर में फ़ोल्डर और फाइलें बनाने की क्षमता देना चाहता हूं जहां केवल Apache (मालिक) और I (समूह) के पास फ़ाइलों को rw करने और निर्देशिकाओं में बदलने की क्षमता है। बाकी सभी पर प्रतिबंध लगा दिया गया है वह सब मैं करने की कोशिश कर रहा हूं। अपाचे को उप फ़ोल्डर बनाने और उनमें फ़ाइलों को संग्रहीत करने में सक्षम होने की आवश्यकता है।
oompahloompah

यह साथ काम नहीं करता है unzip?
datasn.io

2

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

इन चरणों को वह करना चाहिए जो आप चाहते हैं (जिस निर्देशिका का आप उपयोग करना चाहते हैं उसके साथ कमांड में निर्देशिका बदलें):

  • umask 027अपाचे डिफॉल्ट्स स्क्रिप्ट में जोड़ें /etc/default/apache। यह किसी भी फाइल या डायरेक्टरी अपाचे को एक्सेस करने से रोकता है।
  • chown www-data:www-data directoryउस निर्देशिका पर अमल करें जिसे आप अपाचे को लिखना चाहते हैं।
  • chmod 750 directoryउस निर्देशिका पर अमल करें जिसे आप अपाचे को लिखना चाहते हैं।

निर्देशिका में लिखने के लिए अपाचे को अनुमति देने से आपके द्वारा सर्व की जाने वाली सामग्री में सभी प्रकार के मैलवेयर को इंजेक्ट करने की क्षमता खुल जाती है। इस निर्देशिका ट्री की सामग्री को उचित रूप से मॉनिटर करें।

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