स्थानीय मशीन पर फ़ाइलों को साझा करने का अच्छा और आसान तरीका


13

मैं एक निर्देशिका लेना चाहूंगा जिसमें निम्नलिखित गुण हों:

  • कई उपयोगकर्ता इसमें फ़ाइलों की प्रतिलिपि बना सकते हैं
  • इन उपयोगकर्ताओं द्वारा इन फ़ाइलों को हटाया / बदला जा सकता है (उपयोगकर्ता इस निर्देशिका में कॉपी की गई फ़ाइल को हटा / संशोधित कर सकता है)

यह सामान्य फ़ाइल अनुमतियों का उपयोग करके नहीं किया जा सकता है (क्योंकि प्रतिलिपि पर अनुमतियाँ रखी गई हैं)।

यहाँ मैं नेट पर क्या पाया है:

कुछ उपयोग के मामले:

  • स्थानीय मशीन पर संगीत साझा करना
  • सिंपल गिट रिपॉजिटरी शेयरिंग (सिर्फ एक नंगे रिपोजिटरी को कई लोगों के लिए लेखन योग्य बनाते हैं) --- मुझे पता है कि गॉसिस के उपाय हैं
  • कई डेवलपर्स को रूट दिए बिना php ऐप के परीक्षण उदाहरण को संशोधित करने की अनुमति दें (मुझे लगता है कि वे फ़ाइलों की नकल करेंगे) --- मैं गैर-लाभकारी जूनियर डेवलपर्स की एक टीम का नेतृत्व कर रहा हूं और मुझे उस एक को सरल रखने की आवश्यकता है!

संपादित करें

AFAIK सेटिंग SGID बिट enugh नहीं है, यह केवल नई बनाई गई फ़ाइलों को प्रभावित करती है --- और इन उपयोग के मामलों के लिए मूल वर्कफ़्लो ivnolves नकल और अन्य संचालन (जो फ़ाइल के जीआईडी ​​को अपरिवर्तित करता है)

जवाबों:


9

एक्सेस कंट्रोल लिस्ट

सीधे उत्तर एक्सेस कंट्रोल लिस्ट (ACL) है । हाँ, आप एक प्रतिसाद पा सकते हैं, लेकिन वे व्यवहार में काफी अच्छे हैं (केवल समूह लेखन क्षमता के विपरीत जिसके लिए उपयोगकर्ताओं को हर समय इसके बारे में सोचना पड़ता है)। उन्हें जो आवश्यकता होती है वह यह है कि सिस्टम एडमिनिस्ट्रेटर (रूट) समूहों को परिभाषित करता है, यदि आप चाहते हैं कि फाइलें केवल एक नामित समूह द्वारा साझा की जाएं (रूट प्रतिनिधि को चुन सकते हैं, उदाहरण के लिए LDAP से समूहों को स्वीकार करके, लेकिन यह एक और कहानी है)।

आपके पास भाग लेने वाले उपयोगकर्ताओं को 022 के उमर रखने की आवश्यकता है। यदि वे नियमित रूप से गैर-विश्व पठनीय फ़ाइलों को बनाते हैं, तो यह योजना काम करेगी। लेकिन अगर उनके पास एक प्रतिबंधात्मक उम्मा है, तो यह संभवतः है क्योंकि वे वैसे भी फाइलें साझा नहीं करना चाहते हैं।

एसीएल को सक्षम करना

उबंटू डिफ़ॉल्ट रूप से एसीएल को सक्षम नहीं करता है, इसलिए एक बार की व्यवस्थापक आवश्यकता है। /etc/fstabअपने पसंदीदा संपादक का उपयोग करके संपादित करें , और एक फाइल सिस्टम के अनुरूप हर पंक्ति को बदलें जहां आप फ़ाइलों को साझा करना चाहते हैं: aclविकल्पों में जोड़ें । (यह सुनिश्चित करें कि किसी अन्य पंक्ति को नहीं बदलना है, और लंबी लाइनों को लपेटने वाले संपादक का उपयोग नहीं करना है।) यहां aclविकल्प के साथ एक उदाहरण रेखा दी गई है:

UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5  /  ext4  errors=remount-ro,acl  0 1

पहली बार प्रभावी होने के विकल्प के लिए, निम्न जैसे कमांड का उपयोग करें (प्रत्येक फाइलसिस्टम के लिए):

sudo mount -o remount,acl /

aclपैकेज से ACL उपकरण स्थापित करें ।

साझा निर्देशिका की स्थापना

समूह द्वारा साझा की गई फ़ाइलें mygroup:

setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root

यदि लोग फ़ाइलें बनाते हैं और उन्हें साझा निर्देशिका में कॉपी करते हैं, तो फ़ाइलें विश्व-पठनीय होंगी (उमंग के कारण) और समूह में कोई भी फ़ाइलों को जोड़ सकता है और हटा सकता है (क्योंकि समूह समूह-लेखन योग्य है)। लोग एक-दूसरे की फ़ाइलों को संपादित नहीं कर सकते हैं, लेकिन यह एक अच्छी बात है या आप सीधे संपादन संघर्षों में भाग लेंगे।

यदि आपके पास एक यूनिक्स समूह नहीं है, तो आप उपयोगकर्ताओं को एक-एक करके जोड़ सकते हैं:

setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root

संस्करण नियंत्रण

यदि आप चाहते हैं कि लोग जगह-जगह फाइलों को संपादित करने में सक्षम हों, तो आपको संपादन संघर्षों को रोकने के लिए भी कुछ चाहिए। यह संस्करण नियंत्रण है।

Git रिपॉजिटरी को साझा करने के लिए आपको इसकी कोई आवश्यकता नहीं है। आप जानते हैं कि गाइटोसिस जैसे समाधान हैं, इसलिए उनका उपयोग करें।


ACL पूरी तरह से काम करेगा अगर cp (और mv?) द्वारा स्वचालित वंशानुक्रम को नहीं तोड़ा जाए जो लक्ष्य निर्देशिका स्तर पर तयशुदा एसीएल को डिस्क्राइब (अनदेखा) करता है।
उपयोगी

2

बस यह करें:

mkdir /src/teamA
addgroup teamA
chgrp teamA /src/teamA
chmod g+rws /src/teamA

अब teamAसमूह में हर कोई अंदर सब कुछ कर सकता है/src/teamA

जादू निर्देशिका पर sgid (सेट समूह आईडी) बिट है।


AFAIK यह काम नहीं करेगा, अद्यतन पोस्ट देखें
jb।

1

यदि आप चाहते हैं कि उपयोगकर्ता एक साझा फ़ोल्डर में फ़ाइलों का उपयोग करने में सक्षम हों (उदाहरण के लिए, अलग-अलग लोग एक ही मशीन पर अलग-अलग समय पर लॉग इन करते हैं और एक ही फ़ाइलों तक पहुंच की आवश्यकता होती है), तो आप bindfsएक साझा निर्देशिका बनाने के लिए उपयोग कर सकते हैं ।

यह एक साझा निर्देशिका और इसके उपनिर्देशिकाओं से कई स्थानीय उपयोगकर्ताओं को पढ़ने और लिखने (बनाने, हटाने, नाम बदलने, संशोधित ...) करने की अनुमति देता है। प्रत्येक उपयोगकर्ता फ़ाइलों और फ़ोल्डरों (नए बनाए गए सहित) को उनसे संबंधित के रूप में देखेगा।

संक्षेप में, आप चलाते हैं

sudo bindfs -o perms=0700,mirror-only=user1:user2:user3 /home/shared /home/shared

user1, user2 और user3 को उपलब्ध / साझा / बनाने के लिए।

अनुदेश

पूर्ण निर्देशों के लिए, इसे स्थायी रूप से सेट करने के लिए (हर बार जब आप अपना कंप्यूटर स्विच करते हैं) सहित Bindfs-SharedDirectoryLocalUsers (Ubuntu प्रलेखन) देखें । मैं अपनी स्वयं की मशीन पर कई निर्देशिकाओं के लिए उपयोग करता हूं, प्रत्येक अलग-अलग साझाकरण समूहों के साथ (एक फ़ोल्डर सभी खातों के लिए उपलब्ध है, दूसरा केवल काम करने वाले खातों के लिए, दूसरा केवल व्यक्तिगत खातों के लिए)।

पोस्ट से:

अनुमति सेटिंग्स के साथ किसी अन्य स्थान (माउंटपॉइंट) के लिए निर्देशिका बढ़ते के लिए bindfs एक FUSE फाइल सिस्टम है। यह आपको माउंटपॉइंट के अंदर से फ़ाइलों के स्वामित्व और अनुमतियों को निर्दिष्ट करने की अनुमति देता है।

...

मुख्य लाभ यह है कि साझा निर्देशिका में बनाई गई नई फाइलें स्वामित्व और अनुमतियां प्राप्त करेंगी।

अभिगम नियंत्रण सूची (एसीएल)

प्रलेखन नोट:

यदि आप विभिन्न उपयोगकर्ताओं और / या समूह के लिए अधिक उन्नत अनुमतियाँ सेट करना चाहते हैं, तो एक्सेस कंट्रोल लिस्ट आज़माएं ।

देखें गाइल्स जवाब अधिक जानकारी के लिए।


आप मुसीबत oneiric आप उपयोगकर्ता-निर्मित संकुल यहाँ प्राप्त कर सकते पर bindfs जोड़ने में समस्या आ रही है, तो bugs.launchpad.net/ubuntu/+source/bindfs/+bug/851600
david.libremone

-3

आप एक क्रॉन जॉब के साथ शेलहॉलिक के सॉल्यूशन को जोड़ सकते हैं जो उस फ़ोल्डर की सभी फाइलों के लिए हर 15 सेकंड या कुछ इसी तरह से अपडेट करता है।

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