मैं एक फ़ोल्डर का केवल-लेखन दृश्य कैसे बना सकता हूं?


12

मैं फाइलसिस्टम पर एक जगह रखना चाहता हूं जो दूसरे फ़ोल्डर के राइट-ओनली "व्यू" को प्रस्तुत करता है जिसे मैंने पढ़ने-लिखने के लिए एक्सेस किया है।

मैं एक एफ़टीपी ड्रॉप बॉक्स के व्यवहार के समान कुछ का चित्रण कर रहा हूँ, जहाँ फ़ाइलों को इसमें कॉपी किया जा सकता है, लेकिन इसके बाहर नहीं पढ़ा जाता है, जैसे:

$ ls read-write-view/ write-only-view/
read-write-view/:
a  b  c

write-only-view/:

$ cp d write-only-view/
$ ls read-write-view/ write-only-view/
read-write-view/:
a  b  c  d

write-only-view/:

यह महत्वपूर्ण है कि यह उदाहरण के रूप में काम करता है - सामग्री तब भी दिखाई देती है जब इसके माध्यम से पहुँचा जाता है read-write-view/, और दोनों "दृश्य" एक उपयोगकर्ता के लिए कार्यात्मक हैं।

मैं इस तरह से कुछ कैसे सेट कर सकता हूं? प्रतीकात्मक लिंक की कुछ चतुर व्यवस्था, शायद? या बाँध माउंट का एक असामान्य विन्यास?

जवाबों:


2

मैंने कुछ साल पहले के सांबा मेलिंग सूची पर छात्र ड्रॉप बॉक्स के लिए यही सवाल पूछा था (http://lists.samba.org/archive/samba/2008-Seture/143610.html) और जवाब ने हमारे लिए काम किया है। आपको अपने फ़ाइल सिस्टम पर (acl पैकेज से) विस्तारित acl विशेषताओं की आवश्यकता है, यहाँ जेरेमी एलीसन का उत्तर है ...

ठीक है, समस्या यह है कि छात्रों को युक्त निर्देशिका को पढ़ने में सक्षम होने की आवश्यकता है ताकि वहां नई फ़ाइलों को खींचने और छोड़ने में सक्षम हो सकें। कारण यह है कि सांबा को असंवेदनशील लुकअप करने के लिए अपनी ओर से निर्देशिका को स्कैन करने में सक्षम होना चाहिए।

लेकिन जब तक आप छात्रों को एक-दूसरे की फ़ाइलों के नाम देखने की अनुमति नहीं देते हैं, तब तक आप एक ड्रॉपबॉक्स सेट कर सकते हैं ताकि छात्र इसमें लिख सकें (और अपनी खुद की फाइलें) लेकिन दूसरों की फाइलों को संपादित या देख नहीं सकते।

सबसे पहले, आप यह सुनिश्चित करना चाहते हैं कि ड्रॉपबॉक्स निर्देशिका में बनाई गई फाइलें छात्र के प्राथमिक समूह के स्वामित्व में नहीं हैं, लेकिन ड्रॉपबॉक्स direcotry के समूह के मालिक द्वारा। इसलिए :

अध्यापक ड्रॉपबॉक्स

यह शिक्षक समूह के स्वामित्व में है। फिर यह सुनिश्चित करने के लिए ड्रॉपबॉक्स डायरेक्टरी पर सेटगिड बिट सेट करें कि वहाँ बनाई गई फ़ाइलों में शिक्षकों का एक समूह है।

chmod g + s ड्रॉपबॉक्स

फिर सुनिश्चित करें कि ड्रॉपबॉक्स में एक फ़ाइल का नाम बदला जा सकता है या केवल फ़ाइल के मालिक द्वारा या निर्देशिका के स्वामी द्वारा, या रूट द्वारा (उसी अनुमतियाँ जो / tmp में है) हटाया जा सकता है।

chmod + t ड्रॉपबॉक्स

फिर छात्रों को एसीएल जोड़कर निर्देशिका में लिखने की अनुमति दें

setfacl -mg: छात्र: rwx DropBox

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

यदि आपको निर्देशिका के स्वामी के स्वामित्व वाली फ़ाइलों के कारण होने की आवश्यकता है, तो उन छात्रों द्वारा नहीं, जिन्होंने उन्हें बनाया है, जैसा कि आपको ऊपर वर्णित एक अलग शेयर सेट करने की आवश्यकता है, लेकिन फिर शेयर स्तर पैरामीटर जोड़ें:

वारिस मालिक = हाँ

जो उस निर्देशिका में निर्देशिकाओं में बनाई गई फ़ाइलों का कारण बनेगी, जिसमें मालिक होने वाली निर्देशिका का स्वामित्व होगा, न कि मालिक बनाने का।


1

आप इसमें से कुछ को फ़ोल्डर में अनुमतियों को सेट करके प्राप्त कर सकते हैं जैसे कि लक्ष्य उपयोगकर्ताओं ने फ़ोल्डर तक पहुंच लिखी है, लेकिन पहुंच को नहीं पढ़ा है।

उदाहरण के लिए, किसी को एक फ़ोल्डर में लिखने की अनुमति देने के लिए लेकिन उसकी सामग्री को सूचीबद्ध नहीं करने के लिए, आप निम्नलिखित कार्य कर सकते हैं:

chmod o=wx folder

या केवल उपयोगकर्ताओं के किसी विशेष समूह को यह पहुँच प्रदान करने के लिए:

chgrp groupname folder
chmod o=,g=wx folder

अब वे उपयोगकर्ता फ़ोल्डर की सामग्री को सूचीबद्ध नहीं कर पाएंगे, लेकिन फ़ोल्डर में फ़ाइलों को रखने में सक्षम होंगे:

$ ls folder
ls: cannot open directory folder: Permission denied
$ touch folder/filename

यह वह सब कुछ नहीं करता है जो आप चाहते हैं, क्योंकि उपयोगकर्ता अभी भी फ़ोल्डर में फ़ाइलों का उपयोग कर सकते हैं यदि वे नाम का अनुमान लगा सकते हैं। आप इस जोखिम को एक क्रॉन जॉब के माध्यम से कम कर सकते हैं जो नियमित रूप से ड्रॉप बॉक्स फ़ोल्डर से फ़ाइलों को किसी ऐसे स्थान पर ले जाता है जहां अन्य उपयोगकर्ताओं की पहुंच नहीं है।


1

आप rw एक्सेस के साथ एक ड्रॉप फोल्डर "राइट-ओनली-व्यू" बना सकते हैं और कंटेंट को दूसरे "रीड-राइट-व्यू" में ले जाने के लिए क्रोनजोब या इनोड नोटिफिकेशन का उपयोग कर सकते हैं।


1

मेरा मानना ​​है कि आप बस बाँध माउंट छल का उपयोग कर सकते हैं /etc/fstab:

/path/to/read-write-view /path/to/write-only-view none bind 0 0

तो, आप शायद तब:

chmod a=wx /path/to/write-only-view
chmod a=rwx /path/to/read-write-view

1

"किसी निर्देशिका को किसी अन्य स्थान पर माउंट करने और अनुमति बिट्स को बदलने के लिए" डिज़ाइन किए गए bindfs का उपयोग करें ।

एक सामान्य फ़ोल्डर से शुरू करें, जिसमें पहुंच और रीडिंग दोनों हैं:

$ mkdir read-write-view && touch read-write-view/{a,b,c}
$ ls read-write-view
a  b  c

बिना पहुंच के फ़ोल्डर को माउंट करने के लिए bindfs का उपयोग करें:

$ mkdir write-only-view
$ sudo bindfs --perms=a-r read-write-view write-only-view

सत्यापित करें कि केवल मूल फ़ोल्डर की सामग्री को सूचीबद्ध किया जा सकता है:

$ ls read-write-view write-only-view
read-write-view:
a  b  c
ls: cannot open directory write-only-view: Permission denied

सत्यापित करें कि मूल फ़ोल्डर को माउंट के माध्यम से लिखा जा सकता है:

$ echo 'Can you read this?' > write-only-view/d
$ cat read-write-view/d
Can you read this?

सत्यापित करें कि फ़ाइलें माउंट के माध्यम से नहीं पढ़ी जा सकती हैं:

$ cat write-only-view/d
cat: write-only-view/d: Permission denied

0

पहले, इसके बारे में उल्टा सोचना आसान है। आपके पास एक ऐसा फ़ोल्डर है जो कि जिस किसी के लिए rw है, उसे लिखने के लिए पहुँच की आवश्यकता है, और पढ़ने वालों के लिए इस फ़ोल्डर के "केवल" पढ़ने के लिए केवल "एक्सेस" की आवश्यकता है।

मैं कभी भी सही ढंग से काम करने के लिए आरओ-बीइंडो-आरओ विकल्प प्राप्त नहीं कर पाया। ऐसा करने का सबसे विश्वसनीय तरीका एनएफएस का उपयोग करना है। निम्नलिखित को / etc / निर्यात में जोड़ें

/path-to-folder/folder 127.0.0.1(secure,ro,no_root_squash)

उसके बाद केवल-पढ़ने के लिए "दृश्य" माउंट करें

mount -o ro 127.0.0.1:/path-to-folder/folder /read-only-folder

अब आपके पास अपने मूल फ़ोल्डर का केवल पढ़ने का दृश्य होना चाहिए।

मुझे लगता है कि आप सांबा / cif के साथ भी यही काम कर सकते हैं, लेकिन यह केवल नेटवर्क एक्सेस के लिए वास्तव में समझ में आएगा।

यह समाधान इस हाउटो से प्रेरित ( चोरी से ) था । मुझे उम्मीद है यह मदद करेगा।


मैं केवल पढ़ने-लिखने के बारे में नहीं पूछ रहा हूँ, केवल पढ़ने-लिखने और लिखने के लिए ही हूँ।
ændrük

0

मुझे नहीं लगता कि यह संभव है, क्योंकि आपको सामग्री प्रदर्शित करने के लिए "केवल लिखना" डिस्क को पढ़ना होगा।

यदि मैं ऐसा उपकरण बेचता, तो कोई भी यह कैसे सत्यापित कर सकेगा कि यह काम कर रहा है? शायद यह किकस्टार्टर के लिए एक है।


0

यह एक उत्तर नहीं है, लेकिन वास्तव में एक विचार और संभवतः एक और प्रश्न है। मेरे लिए यह ऐसा लगता है जैसे इसे किसी प्रकार के हुक या ट्रिगर के माध्यम से लागू किया जा सकता है।

पृष्ठभूमि में कुछ कार्यक्रम केवल लिखने वाले फ़ोल्डर को देख सकते हैं (मतदान द्वारा नहीं, इसे FAM या कुछ इस तरह से अधिसूचित किया जा सकता है) और फिर जैसे ही यह दिखाई देता है प्रत्येक फ़ाइल को केवल-पढ़ने के लिए फ़ोल्डर में स्थानांतरित करें।

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