उबंटू में एक फ़ोल्डर पर कई उपयोगकर्ताओं को लिखने की अनुमति दें


80

एक फ़ोल्डर है जो उपयोगकर्ता के स्वामित्व में है tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

मैं एक अन्य उपयोगकर्ता (ruser) को दस्तावेज़ फ़ोल्डर पर अनुमति लिखने की अनुमति देना चाहता हूं। दो उपयोगकर्ता (tomcat6 और ruser) एक ही समूह के नहीं हैं। मैंने प्रयोग करने की कोशिश की है setfacl:

sudo setfacl -m  u:ruser:rwx document

लेकिन यह मुझे setfacl: document: Operation not supportedत्रुटि देता है । कृपया मेरी मदद करें।

जवाबों:


143

ऐसा करने के दो तरीके हैं: निर्देशिका को "दुनिया" लिखने योग्य बनाने के लिए या दो उपयोगकर्ताओं के लिए एक नया समूह बनाने के लिए और उस समूह के लिए निर्देशिका को लिखने योग्य बनाएं।

जाहिर है कि इसे विश्व के लिए उपयुक्त बनाना एक बुरी बात है, इसलिए दूसरा विकल्प बेहतर है।

लिनक्स में उपयोगकर्ता एक से अधिक समूहों से संबंधित हो सकते हैं। इस मामले में आप एक नया समूह बनाना चाहते हैं, तो आइए इसे कॉल करें tomandruser:

sudo groupadd tomandruser

अब यह समूह मौजूद है, इसमें दो उपयोगकर्ता जोड़ें:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

अब जो कुछ बचा है वह निर्देशिका पर अनुमतियाँ सेट करने के लिए है:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

अब केवल टेंड्रांडर समूह के सदस्य निर्देशिका के भीतर कुछ भी पढ़, लिख या निष्पादित कर सकते हैं। नोट -R तर्क को chmod और chgrp कमांड के लिए: यह उन्हें लक्ष्य निर्देशिका के हर उप निर्देशिका में पुनरावृत्ति करने और इसे खोजने वाली प्रत्येक फ़ाइल और निर्देशिका को संशोधित करने के लिए कहता है।

आप चाहें 774तो 770 को कुछ बदल सकते हैं जैसे यदि आप चाहते हैं कि अन्य लोग फ़ाइलों को पढ़ने में सक्षम हों, 775यदि आप दूसरों को फ़ाइलों को पढ़ना और निष्पादित करना चाहते हैं , तो समूह असाइनमेंट परिवर्तन तब तक प्रभावी नहीं होंगे जब तक उपयोगकर्ता लॉग आउट और बैक नहीं करते। में।

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


2
आप संभवत: निर्देशिकाओं के लिए सेट-समूह-आईडी ध्वज भी सेट करना चाहते हैं, नई फ़ाइलों और उप-निर्देशिकाओं को स्वचालित रूप से सही समूह के स्वामित्व में बनाने के लिए:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio

8
मैं chmod 770, 775 या जो भी हो, का उपयोग करने से बचूँगा। यह सभी फ़ाइलों की अनुमतियों के साथ खिलवाड़ करता है । इसके बजाय कुछ और का उपयोग करें जैसे chmod -R g+wलेखन अनुमतियाँ जोड़ने के लिए सब कुछ मिलाने के बिना।
क्रिश्चियन वरगा

2
यदि कोई उपयोगकर्ता वहां एक नई फ़ाइल बनाता है (जैसे, mysql by SELECT INTO OUTFILE), तो वह अपने प्राथमिक समूह ( mysqlइस मामले में) की अनुमति देता है, और फ़ाइल किसी अन्य उपयोगकर्ता द्वारा वैसे भी सुलभ नहीं है। इसे कैसे हल करें?
ओलेक्सा

2
क्या होगा यदि आप उपयोगकर्ताओं को फ़ोल्डर के स्वामित्व को बदलने के बिना किसी फ़ोल्डर में एक्सेस लिखने के लिए अनुदान देना चाहते हैं जैसे कि आप public_html फ़ोल्डर पर अपाचे की अनुमतियों के साथ गड़बड़ नहीं करना चाहते हैं?
कोडेकोवॉय

2
ध्यान दें: "समूह असाइनमेंट परिवर्तन तब तक प्रभावी नहीं होंगे जब तक कि उपयोगकर्ता लॉग आउट और वापस नहीं आते।" मुझे वह याद आ गया है :)
व्लादिमीर वुकानैक

3

उदाहरण स्क्रिप्ट देने के लिए एक उदाहरण दिखाता है w (write)/ r (read) / x (execute)के लिए दिया फ़ोल्डर पथ अनुमति /path/to/the/directoryके लिए USER1और USER2। आप केवल लेखन पहुँच की जगह कृपया देना चाहते हैं rwxके साथ w


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.