नई बनाई गई फ़ाइलों पर फ़ाइल अनुमतियां कैसे लागू की जाती हैं?


12

मेरे पास एक निर्देशिका है जिसमें निम्नलिखित अनुमतियाँ सेट हैं:

drwxr-s---. user group folder

डेस्कटॉप पर, मैं इस फ़ोल्डर का उपयोग करता हूं और एक नई फ़ाइल कॉल बनाने के लिए राइट क्लिक करता हूं foo.txt। फिर टर्मिनल का उपयोग करते हुए, मैंने कमांड का उपयोग करके एक और फ़ाइल बनाई $ touch bar.txt

जब मैं इन फ़ाइलों के लिए अनुमतियों की जाँच करता हूँ, मेरे पास है:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

मैं उम्मीद कर रहा था -rw-r-----. user group। समूह के लिए अतिरिक्त लिखने की अनुमति और दूसरों के लिए पढ़ने की अनुमति कैसे आई?

जवाबों:


16

setguid

यहां 2 सेनाएं काम करती हैं। पहले setgid बिट उस फ़ोल्डर पर सक्षम है folder

drwxr-s---. user group folder

यह sइस पंक्ति की शुरुआत में वर्णों के पैक में है। वे इस प्रकार समूहीकृत हैं:

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

इसका r-sमतलब है कि इस फ़ोल्डर के अंदर बनाई गई किसी भी फ़ाइल या निर्देशिका में समूह को समूह में स्वचालित रूप से सेट किया जाएगा group

यही कारण है कि फ़ाइलों foo.txtऔर bar.txtऐसा बनाया जा करने के लिए:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

अनुमतियाँ और umask

आपके द्वारा देखी जा रही अनुमतियां एक और मामला है। ये आपके लिए सेटिंग्स द्वारा नियंत्रित होते हैं umask। आप देख सकते हैं कि आपका umaskकमांड के साथ क्या सेट है umask:

$ umask
0002

नोट: इन बिट्स को "मोड" बिट्स भी कहा जाता है।

यह एक मुखौटा है इसलिए यह अनुमतियों से संबंधित किसी भी बिट को अक्षम कर देगा जो सक्षम हैं। इस उदाहरण में केवल एक बिट मैं चाहता हूं कि अन्य के लिए लिखने की अनुमति है।

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

इस कमांड में "बिट्स" का प्रतिनिधित्व दशमलव रूप में है। तो एक 2 बाइनरी फॉर्म में 010 के बराबर है, जो राइट बिट है। 4 (100) का मतलब होगा कि आप विकलांग पढ़ना चाहते हैं। 7 (111) का अर्थ है कि आप सभी विकलांगों को पढ़ना / लिखना / निष्पादित करना चाहते हैं। इसे यहाँ से बनाना:

$ umask 007

अन्य उपयोगकर्ताओं के लिए बिट्स को पढ़ने / लिखने / निष्पादित करने को अक्षम करेगा।

तो फिर आपकी फाइलों का क्या?

खैर umaskनई फाइल बनने पर सेट की जाने वाली अनुमतियों को नियंत्रित करता है। तो अगर हम निम्नलिखित umaskसेट था:

$ umask 007

और नई फ़ाइलों को छूना शुरू किया, हम उन्हें इस तरह बनाया हुआ देखेंगे:

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

अगर हमने इसे किसी और चीज़ में बदल दिया, तो यह कहें:

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

इसका उन फ़ाइलों पर कोई प्रभाव नहीं पड़ेगा जो हमने पहले ही बनाई हैं। यहाँ देखें:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

तो फिर फ़ाइल ब्राउज़र के साथ क्या हो रहा है?

वह umaskहै जिसे मैंने "सॉफ्ट" सेटिंग कहा है। यह किसी भी तरह से निरपेक्ष नहीं है और कई तरीकों से यूनिक्स में आसानी से पारित किया जा सकता है। कई उपकरण स्विच लेते हैं जो आपको उनके संचालन के भाग के रूप में अनुमतियाँ निर्दिष्ट करने की अनुमति देते हैं।

mkdirउदाहरण के लिए लें :

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

-mस्विच के साथ हम ओवरराइड कर सकते हैं umasktouchताकि आप रचनात्मक प्राप्त करने के लिए आदेश इस सुविधा नहीं है। यह देखें U & L Q & A शीर्षक: क्या कमांड लाइन पर सेट की गई अनुमतियों के साथ फाइलें बनाई जा सकती हैं? सिर्फ ऐसे तरीकों के लिए।

दूसरा तरीका? बस ओवरराइड करें umask। फ़ाइल ब्राउज़र सबसे अधिक संभावना है कि यह या तो पूरी तरह से अनदेखा कर रहा है umaskऔर फ़ाइल को पूरी तरह से अनदेखा कर रहा है और जो कुछ भी इसे करने के लिए कॉन्फ़िगर किया गया है उसका उपयोग करके।


मुझे लगा कि ऑमस्क विशेषाधिकार हटाने के लिए है, न कि जोड़ने के लिए। या क्या मैं कुछ न कुछ भूल रहा हूं?
क्वेश्चन ओवरफ्लो

@QuestionOverflow - जब फाइल और डायरेक्टरी बनाई जाती है तो आप अनुमतियों को नियंत्रित करते हैं। इसलिए इसका नाम। यह निर्माण प्रक्रिया के दौरान इस्तेमाल होने से बिट्स को मास्क करता है।
स्लम

मेरे उम्मेद पढ़ते हैं 0002। यदि umask हटाने की अनुमति के बजाय अनुमतियाँ सेट करता है, तो निष्पादित बिट उपयोगकर्ता और समूह दोनों के लिए सेट किया जाएगा जब मैं करता हूं touch, लेकिन यह नहीं है।
क्वेश्चन ओवरफ्लो

@QuestionOverflow - यह touchकमांड की एक सीमा है । : लिंक मैं अपने ए में शामिल इस लिंक को देख unix.stackexchange.com/questions/47178/...
SLM

टिप्पणियों के आधार पर कुछ बिंदुओं को स्पष्ट करने के लिए: 1) नई फ़ाइल की अनुमतियाँ हमेशा umask द्वारा निर्धारित की जाती हैं + फ़ाइल बनाने के लिए उपयोग किया जाने वाला प्रोग्राम, 2) अनुमति कभी भी मूल निर्देशिका से विरासत में नहीं मिलती है।
प्रश्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.