निर्देशिका में फ़ाइलों के लिए डिफ़ॉल्ट उपयोगकर्ता नाम और समूह सेट करना


13

इस सहायक पोस्ट का उपयोग करके मैं एक डिफ़ॉल्ट समूह और एक फ़ोल्डर में फ़ाइल अनुमतियों को सेट करने में सक्षम हूं।

मुझे एक डिफॉल्ट मालिक (टीमलाइड यूआईडी 1234) सेट करने में परेशानी हो रही है।

setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder

getfacl /my/test/folder

# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

उस के साथ:

[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov  6 08:58 somefile

इसलिए सही समूह को असाइन किया गया है, लेकिन नई फ़ाइल में फ़ाइल बनाने वाले उपयोगकर्ता का स्वामित्व है। मुझे टीम बनाने के लिए नई फाइलें चाहिए: web_prod मालिक / समूह।

ऐसा प्रतीत होता है कि setfaclइसका उपयोग डिफ़ॉल्ट उपयोगकर्ता को सेट करने के लिए भी किया जा सकता है। मौजूदा फ़ोल्डर acl कॉन्फ़िगरेशन (ऊपर) के साथ:

[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder

अब एक अलग उपयोगकर्ता के रूप में एक फ़ाइल बनाने के लिए। मैं उम्मीद कर रहा हूँ कि यह टीम के लिए है: web_prod स्वामित्व

[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary web_prod 0 Nov  6 08:58 somefile

नई फ़ाइल में अभी भी फ़ाइल बनाने वाले स्वामी का स्वामित्व है, न कि 1234 (टीमलेड)।

क्या मैं उसके बाद भी संभव हूं, या क्या मैं इस गलत काम के बारे में जा रहा हूं?

जवाबों:


18

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

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

सेटफैक्ल के साथ आप कुछ ऐसा कर सकते हैं जो अधिकांश परिदृश्यों में लगभग बराबर है: आप एसीएल को सेट कर सकते हैं default:user:teamlead:rwx। इस तरह नामित उपयोगकर्ता नई फ़ाइलों को लिख सकता है, भले ही कोई और इसका मालिक हो।


कृपया इस उत्तर को 'डिफ़ॉल्ट: उपयोगकर्ता: टीम: टीम: rwx' से निर्देशिका '/ फू' पर लागू करने के लिए कमांड के साथ अपडेट करें
user319862

10

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

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


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

@bviktor आप एसीएल के साथ समान प्रभाव प्राप्त कर सकते हैं।
गिलेस एसओ- बुराई को रोकना '

आप ACL के साथ नई फ़ाइलों के लिए स्वामी और समूह को कैसे निर्दिष्ट करते हैं?
ब्विकेटर

@bviktor मालिक वह है जो कोई भी फ़ाइल बनाता है, वह नहीं बदलता है। पारंपरिक अनुमतियों में फ़ाइल का स्वामित्व करने वाला समूह अप्रासंगिक है। नई फ़ाइलों पर ACL निर्देशिका का डिफ़ॉल्ट ACL है, उसी तरह नई फ़ाइलों पर स्वयं का समूह BSD शब्दार्थ ( g+s) के साथ निर्देशिका का अपना समूह है ।
गाइल्स का SO- बुराई का होना बंद '

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

1

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

इसके लिए आप usermod और पैरामीटर -g का उपयोग कर सकते हैं

   -g, --gid GROUP
       The group name or number of the user's new initial login group. The group must exist.
       Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group.
       The group ownership of files outside of the user's home directory must be fixed manually.

जैसे

test2@kinakuta:/tmp$ id
uid=1002(test2) gid=1002(test2) grupos=1002(test2),1003(testgroup)
test2@kinakuta:/tmp$ touch test2
test2@kinakuta:/tmp$ ls -la test2
-rw-r--r-- 1 test2 test2 0 nov 23 22:26 test2
root@kinakuta:/tmp# usermod -g testgroup test2
root@kinakuta:/tmp# su test2
test2@kinakuta:/tmp$ touch test2_1
test2@kinakuta:/tmp$ ls -la test2_1 
-rw-r--r-- 1 test2 testgroup 0 nov 23 22:27 test2_1

0

लिनक्स पर आपको फ़ाइलों के लिए मूल समूह के लिए मूल dir पर sgid होना चाहिए। (हालांकि आपको BSD सिस्टम पर निर्देशिका पर sgid की आवश्यकता नहीं है।)


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