लिनक्स में एक निर्देशिका के तहत नई बनाई गई फ़ाइलों और उप-निर्देशिकाओं के लिए डिफ़ॉल्ट अनुमतियाँ सेट करना?


99

मेरे पास लंबे समय से चल रही स्क्रिप्ट और अनुप्रयोगों का एक समूह है जो कुछ उपयोगकर्ताओं के बीच साझा की गई निर्देशिका में आउटपुट परिणाम संग्रहीत कर रहे हैं। मैं यह सुनिश्चित करने का एक तरीका चाहूंगा कि इस साझा निर्देशिका के तहत बनाई गई प्रत्येक फ़ाइल और निर्देशिका में स्वचालित रूप से u=rwxg=rwxo=rअनुमतियाँ हों।

मुझे पता है कि मैं umask 006अपनी विभिन्न लिपियों को सिर पर इस्तेमाल कर सकता हूं, लेकिन मुझे यह तरीका पसंद नहीं है क्योंकि कई उपयोगकर्ता अपनी स्क्रिप्ट लिखते हैं और खुद को umask सेट करना भूल सकते हैं।

मैं वास्तव में सिर्फ फाइल सिस्टम को एक निश्चित अनुमति के साथ नव निर्मित फ़ाइलों और निर्देशिकाओं को सेट करना चाहता हूं यदि यह एक निश्चित फ़ोल्डर में है। क्या ये संभव भी है?

अद्यतन : मुझे लगता है कि यह डिफ़ॉल्ट ACL कार्यक्षमता का उपयोग करके POSIX ACLs के साथ किया जा सकता है , लेकिन यह इस समय मेरे सिर पर थोड़ा सा है। यदि कोई भी यह समझा सकता है कि डिफ़ॉल्ट ACL का उपयोग कैसे किया जाता है तो वह शायद इस प्रश्न का उत्तर अच्छी तरह से देगा।


1
POSIX ACLs अच्छे हैं, हालांकि आपके द्वारा सामना की जाने वाली मशीनों का अच्छा 60% वितरण के आधार पर उन्हें कुछ फ़ाइल सिस्टमों के लिए चालू नहीं होगा। : यहाँ एक बहुत अच्छा परिचय और उदाहरण है suse.de/~agruen/acl/linux-acls/online
टिम पोस्ट

1
आपका मतलब वही दस्तावेज़ है जो मैंने जोड़ा है :) मुझे अभी तक इसे पढ़ने के लिए कोई बदलाव नहीं मिला है लेकिन उपलब्धता की समस्या पर सिर उठने के लिए धन्यवाद।
डेविड डीन

1
टिम पोस्ट की टिप्पणी में लिंक मृत प्रतीत होता है, लेकिन इंटरनेट पुरालेख के लिए धन्यवाद, मैं इसे देख सकता था, और सत्यापित कर सकता हूं कि vanemery.com/Linux/ACL/POSIX_ACL_on_Linux.html में ठीक उसी दस्तावेज़ शामिल हैं। मैं लिंक को अपडेट करने के लिए प्रश्न को संपादित करूँगा।
१16

जवाबों:


78

सही स्वामित्व प्राप्त करने के लिए, आप निर्देशिका के साथ समूह सेट बिट को सेट कर सकते हैं

chmod g+rwxs dirname

यह सुनिश्चित करेगा कि निर्देशिका में बनाई गई फ़ाइलें समूह के स्वामित्व में हैं। फिर आपको यह सुनिश्चित करना चाहिए कि हर कोई umask 002 या 007 या उस प्रकृति के कुछ के साथ चलता है --- यही कारण है कि डेबियन और कई अन्य लिनक्स सिस्टम डिफ़ॉल्ट रूप से प्रति-उपयोगकर्ता समूहों के साथ कॉन्फ़िगर किए गए हैं।

यदि उपयोगकर्ता की उमर बहुत अधिक मजबूत है तो मुझे आपकी अनुमति के लिए बाध्य करने का कोई तरीका नहीं पता है।


23
यह वास्तव में एक समाधान प्रदान नहीं करता
यारिन

3
"... सुनिश्चित करें कि हर कोई umask 002 या 007 या उस प्रकृति के कुछ के साथ चलाता है" - यह थोड़ा खिंचाव है .... आप पोस्टफिक्स, डवकोट, क्लैम और स्पैम हत्यारे कैसे बनाते हैं?
jww

2
+sभाग क्या करता है? धन्यवाद।
tommy.carstensen

1
इस स्थिति में इसका अर्थ है समूह आईडी सेट करें। यह कहना है कि हम SG + बिट सेट करने के लिए g + s का उपयोग करते हैं। मैं कहता हूं "इस मामले में" क्योंकि + एस को समूह के लिए जी के साथ जोड़ा गया था। + s का उपयोग SUID बिट (setuid) की स्थापना के लिए भी किया जा सकता है।
Bastion

57

यहां बताया गया है कि कम से कम लिनक्स के तहत डिफ़ॉल्ट ACL का उपयोग कैसे किया जाता है।

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

/dev/mapper/qz-root   /    ext3    errors=remount-ro,acl   0  1

फिर इसे दूर करें:

mount -oremount /

अब, डिफ़ॉल्ट ACL सेट करने के लिए निम्न कमांड का उपयोग करें:

setfacl -dm u::rwx,g::rwx,o::r /shared/directory

अब सभी नई फ़ाइलों /shared/directoryको वांछित अनुमति मिलनी चाहिए। बेशक, यह फ़ाइल बनाने वाले एप्लिकेशन पर भी निर्भर करता है। उदाहरण के लिए, अधिकांश फाइलें प्रारंभ से ही किसी के द्वारा भी निष्पादन योग्य नहीं होंगी (खुले (2) या प्राणी (2) कॉल के लिए मोड तर्क के आधार पर, जैसे कि ऑमस्क का उपयोग करते समय)। कुछ उपयोगिताओं जैसे cp, tarऔर rsyncस्रोत फ़ाइल (नों) की अनुमतियों को संरक्षित करने का प्रयास करेगी जो आपके डिफ़ॉल्ट एसीएल को बाहर निकाल देंगे यदि स्रोत फ़ाइल समूह-योग्य नहीं थी।

उम्मीद है की यह मदद करेगा!


ऐसा लगता है कि इसके लिए अभी भी umaskसभी उपयोगकर्ताओं के लिए उचित आवश्यकता है । = / unix.stackexchange.com/questions/71743/…
अनातोली टेकटोनिक

1
@techtonik जैसा कि मैंने लिखा है, यह फ़ाइल बनाने वाले एप्लिकेशन पर निर्भर करता है। जैसे, यदि आप उपयोग करते हैं cpतो यह स्रोत फ़ाइल की अनुमतियों को कॉपी करने का प्रयास करेगा। umaskउपयोग करते समय भी मदद नहीं करता है cp। मैंने उसी समस्या को देखा है tarइस प्रश्न को देखें ।
पेले

@techtonik मैंने अब अपने उत्तर में इसके बारे में एक वाक्य जोड़ा है।
8:15

1
हाँ, ऐसा लगता है कि समस्या 644 के अधिकार को जबरदस्ती लागू करने में थी, जब मेरा एसीएल और पोसिक्स सही सेटअप 664 के लिए था। समस्या का निवारण करने वाले लोगों के लिए इस गिरावट तंत्र को स्पष्ट करना अच्छा होगा। कई के बारे में भी नहीं पता है umask
अनातोली टेकटोनिक

मेरा मतलब है कि मैंने कुछ समय बर्बाद करके यह देखने की कोशिश की कि क्या मेरे पास माउंट के झंडे सही ढंग से सेट नहीं हैं (और ext4 पर उन्हें सेट नहीं किया जा सकता है, क्योंकि ऐसा लगता है कि वे अपने आप काम करते हैं)। कोई जानकारी नहीं है कि कैसे जांच करें कि क्या है setfacl works correctly- मुझे लगता है कि यह विफल होना चाहिए, लेकिन मुझे यकीन नहीं है, क्योंकि उत्तर उस बिंदु को याद करता है।
अनातोली टेकटोनिक

4

यह बदसूरत है, लेकिन आप जो चाहते हैं, उसे प्राप्त करने के लिए सेटफैक्ल कमांड का उपयोग कर सकते हैं।

सोलारिस मशीन पर, मेरे पास एक फाइल है जिसमें उपयोगकर्ताओं और समूहों के लिए ऐक्रेल हैं। दुर्भाग्य से, आपको सभी उपयोगकर्ताओं को सूचीबद्ध करना होगा (कम से कम मुझे इस काम को अन्यथा करने का तरीका नहीं मिल सकता है):

user::rwx
user:user_a:rwx
user:user_b:rwx
...
group::rwx
mask:rwx
other:r-x
default:user:user_a:rwx
default:user:user_b:rwx
....
default:group::rwx
default:user::rwx
default:mask:rwx
default:other:r-x

फ़ाइल acl.lst को नाम दें और user_X के बजाय अपने वास्तविक उपयोगकर्ता नाम भरें।

अब आप निम्नलिखित आदेश जारी करके अपनी निर्देशिका में उन एड़ियों को सेट कर सकते हैं:

setfacl -f acl.lst /your/dir/here

क्या आप उपयोगकर्ता सूची को छोड़ सकते हैं यदि वे सभी एक ही समूह के सदस्य हैं, और केवल समूह अनुमतियों का उपयोग करते हैं?
डेविड डीन

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

4

आपके शेल स्क्रिप्ट में (या .bashrc) आप कुछ का उपयोग कर सकते हैं जैसे:

umask 022

umask एक कमांड है जो एक मास्क की सेटिंग को निर्धारित करता है जो यह नियंत्रित करता है कि नई बनाई गई फ़ाइलों के लिए फ़ाइल अनुमतियां कैसे सेट की जाती हैं।


1
यह सही नहीं है क्योंकि umask उन अनुमतियों को सीमित करता है जो अनुमतियाँ नहीं जोड़ सकते हैं
ACV

@ACV क्या आप विस्तृत कर सकते हैं? यह मेरे लिए काम करता है, नई बनाई गई फाइलें अब समूह सदस्यों को umask 002मेरे .bashrc में करते समय rw अनुमतियाँ रखने की अनुमति देती हैं ।
आर्थर डेंट

3
@ आर्थरडेंट umask 002दूसरों तक पहुंच को सीमित करता है, जिससे समूह अपरिवर्तित रहता है। याद रखें, यह है ugo- कि उपयोगकर्ता समूह दूसरों है। यह भी याद रखें कि ऑमस्क मूल रूप से चूक से घटाना है। फ़ाइलों के लिए: 666 - 002का अर्थ होगा 664 जिसका अर्थ है कि समूह प्रभावित नहीं है।
एसीवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.