किसी निर्देशिका में स्थानांतरित या प्रतिलिपि की गई फ़ाइलों के लिए डिफ़ॉल्ट अनुमतियां कैसे सेट करें?


9

मेरा प्रश्न लिनक्स में सभी नई बनाई गई फ़ाइलों पर डिफ़ॉल्ट फ़ाइल अनुमतियों को सेट करने के तरीके के समान है - लेकिन महत्वपूर्ण तरीकों से अलग है:

मैं चाहता हूं कि डिफ़ॉल्ट निर्देशिकाओं के एक सेट को इनहेरिट करने के लिए एक निश्चित निर्देशिका में बनाई गई (या कॉपी की गई या स्थानांतरित की गई) सभी फाइलें सिस्टम डिफॉल्ट से अलग हों।

तर्क: प्रश्न में निर्देशिका एक आवेदन के लिए "सेवन हॉपर" है। समूह में उपयोगकर्ता निर्देशिका में फ़ाइलें रखते हैं, और ऐप (उसी समूह में किसी अन्य उपयोगकर्ता आईडी के तहत चल रहा है) उन्हें ले जाता है और उन्हें संसाधित करता है। समस्या यह है कि निर्देशिका में रखी गई प्रत्येक फ़ाइल का स्वामी वह उपयोगकर्ता है जिसने इसे वहां रखा है, और अनुमतियाँ "rw-r - r--" के लिए डिफ़ॉल्ट हैं; मैं इसे "rw-rw ----" में बदलना चाहता हूं। इनटेक करने वाला ऐप स्पष्ट रूप से ऐसा नहीं कर सकता है, क्योंकि ऐप के अंतर्गत चल रहा उपयोगकर्ता आईडी प्रश्न में फ़ाइल का मालिक नहीं है, और डिफ़ॉल्ट अनुमतियाँ ऐप को फ़ाइल पर चुमोड करने की अनुमति नहीं देती हैं! जाहिर है, उपयोगकर्ता फ़ाइल डालने के बाद एक काम कर सकता था - लेकिन मैं उपयोगकर्ता द्वारा "ड्रॉप" को यथासंभव सरल रखना चाहता हूं। (ये लोग लिनेक्स-साक्षर नहीं हैं,

umask बहुत शक्तिशाली लगता है: मैं इन उपयोगकर्ताओं द्वारा बनाई गई हर फ़ाइल के लिए डिफ़ॉल्ट अनुमतियाँ सेट नहीं करना चाहता - जो इस निर्देशिका में बनाई गई (या रखी गई) हैं।

कृपया सलाह दें, धन्यवाद!

जवाबों:


5

किसी निर्देशिका में फ़ाइलों के लिए डिफ़ॉल्ट अनुमतियाँ सेट करने के लिए आप एक ACL (एक्सेस कंट्रोल लिस्ट) का उपयोग कर सकते हैं।

से man 5 acl:

यदि कोई डिफ़ॉल्ट ACL किसी निर्देशिका से संबद्ध है, तो फ़ाइल ऑब्जेक्ट बनाने वाले फ़ंक्शन के लिए मोड पैरामीटर और नई ऑब्जेक्ट के ACL को निर्धारित करने के लिए निर्देशिका के डिफ़ॉल्ट ACL का उपयोग किया जाता है:

  1. नई ऑब्जेक्ट को अपनी एक्सेस ACL के रूप में निर्देशिका की डिफ़ॉल्ट ACL विरासत में मिली है।

  2. फ़ाइल अनुमति बिट्स के अनुरूप एक्सेस ACL प्रविष्टियों को संशोधित किया जाता है ताकि वे कोई भी अनुमति न दें जो मोड पैरामीटर द्वारा निर्दिष्ट अनुमतियों में निहित नहीं हैं।

इसे सेट करने के लिए (उपकरण, निर्देशिका, आदि को बदलें, तदनुसार):

अपनी /etc/fstabफ़ाइल संपादित करें और aclमाउंट विकल्प जोड़ें ।

/dev/mapper/star-home /home ext3  defaults,acl 0 2

रीमाउंट या उपयोग द्वारा अपने फाइल सिस्टम को रिमाउंट ( सांबा mount.cifsमैन पेज ):

mount -o remount,acl /home

सुनिश्चित करें कि आपके पास setfaclऔर getfaclउपयोगिताओं हैं।

डिफ़ॉल्ट ACL को निर्देशिका पर सेट करें (आपको मौजूदा फ़ाइलों पर ACL सेट करने की आवश्यकता हो सकती है):

$ setfacl -m d:user:george:rwx,d:group:sales-g:rwx,d:group:marketing-g:rwx projections

अधिक जानकारी के लिए जुड़ा हुआ ट्यूटोरियल देखें।

स्रोत: ट्यूटोरियल भाग 1 और भाग 2

संदर्भ: POSIX एक्सेस कंट्रोल लिस्ट लिनक्स पर


मुझे नहीं लगता कि जब आपने इसे जोड़ा है तो आपको कमांड aclमें एक विकल्प के रूप में जोड़ना चाहिए । यह बेमानी होने वाला है और जब आप अपने जवाब में कमांड चलाते हैं , तो आपको इस तरह एक आउटपुट मिलेगा: ( अंत में देखें )। कृपया इसे सही करें अगर मैं गलत नहीं हूं। mount/etc/fstabmount/dev/vda1 on / type ext4 (rw,errors=remount-ro,acl,acl)acl,acl
its_me

1

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


1

मैं ऐसा करने के चार संभावित तरीकों के बारे में सोच सकता हूं:

  • umask, जिसे आप उपयोग नहीं करना चाहते हैं
  • प्रोग्राम रैपर, जो उस एप्लिकेशन के umask सेट करता है, उपयोगकर्ता नहीं
  • cron, @Peter Eisentraut के रूप में वर्णित; find $HOME/intake -type f -exec chmod 660 {} \;, विभिन्न प्रणालियों के प्रदर्शन में सुधार होता है (जैसे -exec+विकल्प)
  • निर्देशिका आधारित सेटिंग्स, जिसे करने के लिए शेल प्रोग्रामिंग की थोड़ी सी आवश्यकता होती है, लेकिन मूल रूप से शेल को प्रॉम्प्ट या कॉलिंग सीडी सेट करने पर, उस निर्देशिका में मौजूद एक डॉट फ़ाइल (या संभवतः पूर्वज निर्देशिका) में umask बदल जाएगी; बैश के लिए, PROMPT_COMMAND='test -s $PWD/.umask && umask $(cat $PWD/.umask)'";$PROMPT_COMMAND"सबसे सरल होगा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.