लिखने को पढ़ने की अनुमति कैसे दें लेकिन फ़ाइल को हटाएं नहीं


12

मैं उपयोगकर्ताओं को अन्य उपयोगकर्ता निर्देशिका में फाइल बनाने और पढ़ने की क्षमता देना चाहता हूं, लेकिन निर्मित के बाद फ़ाइल को हटाने का विकल्प नहीं है (उदाहरण के लिए चिपचिपा बिट यहां काम नहीं करने जा रहा है ...):

मेरे पास manager निर्देशिका के साथ उपयोगकर्ता है repository
मेरे पास उपयोगकर्ता है worker1जो फ़ाइलों को लिखने की आवश्यकता है, /manager/repositoryलेकिन उन फ़ाइलों को नहीं हटा सकता है
जिनके पास मेरे पास उपयोगकर्ता हैं worker2जो फ़ाइलों को लिखने की आवश्यकता है, /manager/repository लेकिन उन फ़ाइलों को नहीं हटा सकते हैं
जिनके पास मेरे पास उपयोगकर्ता हैं worker3जो फ़ाइलों को लिखने की आवश्यकता है /manager/repository लेकिन नहीं कर सकते फ़ाइलों को हटा दें

लेकिन worker 1-2-3केवल बनाई गई फ़ाइलों को हटा नहीं सकते हैं managerऔर बनाई गई फ़ाइलों rootको हटा सकते हैं worker 1-2-3

मैं कुछ करने की कोशिश की chownऔर chmodसफलता के बिना चिपचिपा सा लागू करने के साथ चाल।


1
क्या worker*उपयोगकर्ता एक निश्चित तरीके से निर्देशिका में लिखते हैं? आपने एक टिप्पणी में उल्लेख किया है कि लॉग फाइलें यहां जाती हैं, तो क्या इसका मतलब यह है कि यहां फाइलें बनाने के लिए एक निश्चित निष्पादन योग्य लॉन्च किया गया है? यदि ऐसा है तो आप निष्पादन योग्य चलाने के लिए workerसमूह को sudoअनुमति दे सकते हैं manager। फिर निष्पादन योग्य managerउपयोगकर्ता के रूप में लॉग बनाएगा जो श्रमिकों द्वारा पठनीय हो सकता है।
Centimane

यदि उपयोगकर्ता फ़ाइल को संशोधित कर सकता है तो वे इसकी सामग्री को मिटा भी सकते हैं, इस प्रकार इसे प्रभावी रूप से "हटा" सकते हैं। ऐसा लगता है कि आपको "सबमिशन" इंटरफ़ेस की आवश्यकता है, न कि फाइलसिस्टम। ईमेल सबसे सरल होंगे।
ybungalobill

जवाबों:


8

विंडोज के विपरीत यूनिक्स / लिनक्स के तहत कोई अलग डिलीट अनुमति नहीं है। फ़ाइल को हटाने (या बनाने या नाम बदलने) का अधिकार युक्त निर्देशिका के लिए बाध्य है। /manager/repository/श्रमिकों को बनाने, हटाने और फ़ाइलों का नाम बदलने से इनकार करने के लिए श्रमिकों के लिए लिखित अनुमति निकालें ।

ध्यान दें कि फ़ाइलों के निर्माण की अनुमति देना संभव नहीं है, लेकिन उनके विलोपन से इनकार करने के लिए।


फाइल की अनुमति को कैसे हटा सकते हैं क्योंकि फ़ाइल हर समय लॉग फ़ाइल में ही
लिखी जाएगी

हालांकि यह सच था, कई आधुनिक सिस्टम विस्तारित ACLs (NFSv4 ACLs का समर्थन करते हैं, जैसा कि FreeBSD, Solaris या Linux (Richacl पैच) द्वारा समर्थित है, जो Windows NT ACLs जैसी ही क्षमता देता है। आपके स्टॉक लिनक्स वितरण की संभावना नहीं है, हालांकि।
स्टीफन चेजालस

@ user63898 आप निर्देशिका को फ़ाइल की फ़ाइल से नहीं, निर्देशिका से लेखन अनुमति हटाते हैं।
12

6

सबसे पहले सुनिश्चित करें कि एसीएल आपके सिस्टम में सक्षम है, फिर इस कमांड को चलाएं

setfacl -d -R -m user::rwx,user:worker1:---,user:worker2:---,user:worker3:--- \
/manager/repository

यह काम किस प्रकार करता है

  • यह कमांड डायरेक्टरी पर मालिक के लिए रीड, राइट और एक्जीक्यूट की अनुमति देगा /manager/repository। यह सभी अनुमतियों को रद्द कर देगा worker1, worker2और worker3

  • यह अन्य उपयोगकर्ताओं को, एक्सेस पढ़ने और लिखने देगा, लेकिन डिलीट एक्सेस को अस्वीकार करेगा।


से man setfacl:

-d, --default
       All  operations  apply to the Default ACL.

-R, --recursive
       Apply operations to all files and directories recursively.

-m, --modify
       Options to modify the ACL of a file or directory.

धन्यवाद, लेकिन समस्या यह है कि उपयोगकर्ताओं को हर समय बनाया जाता है। और कुछ व्यवस्थापक द्वारा हटा दिए गए हैं। तो इसका मतलब है कि मुझे हर बार सेटफ़ेकल के साथ निर्देशिका को अपडेट करने की आवश्यकता है? क्या कोई और सामान्य समाधान है?
user63898

हाँ, जब मैं कार्यकर्ता 1 स्पर्श /manager/repository/x.txt से फ़ाइल बनाने की कोशिश कर रहा हूँ: स्पर्श: स्पर्श नहीं कर सकता `/manager/repository/x.txt ': अनुमति अस्वीकृत
user63898

अभी भी अनुमति प्राप्त होने से इनकार करते हैं जब मैं ls-big repository im प्राप्त करता हूं: drwxrwxr-t 2 प्रबंधक उपयोगकर्ता 4096 Sep 7 11:30 रिपॉजिटरी /
user63898

जब setfacl -d -R -m उपयोगकर्ता :: rwx, उपयोगकर्ता: कार्यकर्ता 1: --- रिपॉजिटरी / कर रहा है और फिर कार्यकर्ता 1 स्पर्श /manager/repository/x.txt im से फ़ाइल बनाने का प्रयास कर रहा है: स्पर्श: स्पर्श नहीं कर सकता / प्रबंधक /repository/x.txt ': अनुमति अस्वीकृत
user63898

5
यह अभी भी किसी को यहाँ एक खाली फाइल लिखने की अनुमति नहीं देगा? जैसे echo " " > $file"" के साथ फाइल कंटेंट को क्लोब करेगा, जो तकनीकी रूप से एक लेखन है, लेकिन प्रभावी रूप से सामग्री को हटा देता है। यह एक वास्तविक रेपो जैसा लगता है जैसे svn यहां सबसे अच्छा दांव होगा।
सेंटीमेन

3

अनुमतियों के साथ ऐसा करने के लिए, आपको NFSv4 ACLs के समान ACL के लिए एक सिस्टम की आवश्यकता होगी। उदाहरण के लिए, FreeBSD पर, यदि फाइलसिस्टम को nfsv4aclsध्वज के साथ रखा गया है , तो आप यह कर सकते हैं:

mkdir testdir
chown manager:worker-group testdir
chmod 775 testdir
setfacl -m group@:D::deny testdir

समूह के सदस्यों को अनुमति देने से स्पष्ट रूप से इनकार करना ।delete_childworker-group

हालाँकि, ध्यान दें कि चूंकि श्रमिक अपने द्वारा बनाई गई फ़ाइलों के मालिक होंगे, वे अभी भी उन पर ACL को संशोधित करने में सक्षम होंगे, और खुद को deleteअनुमति देकर , कि delete_childमूल निर्देशिका की अनुमति पर पूर्वता ले लेंगे और मैं नहीं हूँ यकीन है कि वहाँ एक रास्ता है कि चारों ओर (कम से कम UFS filesystems FreeBSD पर)। उदाहरण के लिए वे कर सकते हैं:

$ touch file
$ rm -f file
rm: file: Operation not permitted
$ setfacl -m owner@:d::allow file
$ rm -f file
$

0

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

chmod 755 /manager/repository

0

हम फ़ाइलों और फ़ोल्डरों को संशोधित कर सकते हैं लेकिन हटा नहीं सकते।

विशेषताएँ निकालने के लिए, निम्नलिखित कमांड चलाएँ:

फ़ाइलों के लिए:

$ sudo chattr -R -a file.txt

निर्देशिका के लिए:

$ sudo chattr -R -a dir1/

(1) प्रलेखन के अनुसार, aविशेषता का अर्थ केवल परिशिष्ट है। क्या उपयोगकर्ता इन फ़ाइलों को संपादित कर सकते हैं? (२) aगुण को किसी निर्देशिका पर स्थापित करने का क्या प्रभाव है ?
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.