मेरे घर की फाइलों को अधिक प्रतिबंधक उमम्स के बावजूद विश्व-योग्य क्यों बनाया जा रहा है?


10

मैंने महसूस किया है कि नई फ़ाइलों और निर्देशिकाओं के लिए अनुमतियाँ थोड़ा अजीब व्यवहार करती हैं। सबसे पहले, सही जवाब देने के लिए umask लगता है:

$ umask
0002

इसका मतलब मेरे उपयोगकर्ता और मेरे समूह के लिए पूर्ण पहुंच है, बाकी दुनिया के लिए कोई लेखन नहीं है, कोई suid नहीं है। लेकिन अगर मैं अपने $ HOME में एक फ़ाइल बनाता हूं, तो यह है कि यह कैसा दिखता है:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

यानी, सभी को राइट एक्सेस देना। निर्देशिकाओं के साथ भी ऐसा ही होता है:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

मुझे लगता है कि यह umask 0000 होने के समान है, 0002 नहीं। मैंने umask के कुछ उदाहरणों के लिए सभी / आदि की खोज की है जो डिफ़ॉल्ट 0002 या 0022 को बदलता है, लेकिन कोई भी नहीं मिला। यह एक डिफ़ॉल्ट CentOS 5.5 स्थापित है। कोई संकेत क्यों हो रहा है?


3
आपकी होम निर्देशिका किस फाइलसिस्टम प्रकार पर है?
Mattdm

4
और तुम कैसे पैदा कर रहे testfileहैं और testdir?
मैट्रम

3
@mattdm, आप जोर देकर कहते थे: यह XFS है। मैं भूल गया कि हमारे पास / घर, / var और कई और अधिक के लिए अलग-अलग वॉल्यूम हैं। हालांकि मैं अक्सर XFS का उपयोग करता हूं और इस व्यवहार को नहीं देखा था। यह कैसे संबंधित हो सकता है?
rsuarez

2
acl स्थानीय रूप से umask को ओवरराइड कर सकता है। क्या यह संभव है कि आपकी निर्देशिकाएँ acl के साथ आरोहित की जा रही हैं?
फहीम मीठा

3
हम्म, जाहिरा तौर पर एक्सएफ़एस में हमेशा एसीएल सक्षम होता है। इसलिए यह आपके / etc / fstab में नहीं दिखा सकता है। अपने विभाजन / निर्देशिका पर getfacl चलाने का प्रयास करें।
फहीम मीठा

जवाबों:


3

मुझे नहीं पता कि क्या मेरे अपने प्रश्न का उत्तर देना उचित है। संपादकों, कृपया, इस पर सलाह दें यदि ऐसा नहीं है। अग्रिम में धन्यवाद।

मुझे लगता है कि मैंने इस रहस्य को सुलझा लिया है: समस्या एक्सएफएस संस्करणों पर डिफ़ॉल्ट एसीएल की कमी थी। यहां / srv / backups के लिए ACL प्रविष्टि दी गई है, जो प्रभावित निर्देशिकाओं में से एक है:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

जब भी मैंने "mkdir परीक्षण" या "टच टेस्टफ़ाइल" किया, यह 777 अनुमतियों के साथ आया। तो मैंने ऐसा किया:

setfacl -m d:u::rwx /srv/backups

एसीएल को इस तरह छोड़ना:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

पहले (माना जाता है) कोई एसीएल नहीं था, लेकिन अब वहाँ है। जब मैं "ls -l" करता हूं, तो मैं अनुमतियों से जुड़ा "+" चिह्न देख सकता हूं। और जादुई रूप से, अब "mkdir परीक्षण" और "टच टेस्टफ़ाइल" अपेक्षित अनुमतियों के साथ काम करते हैं:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

मुझे नहीं पता कि ऐसा क्यों होता है। मुझे लगता है कि XFS को डिफ़ॉल्ट ACL पसंद नहीं है, और ऐसा होने पर अजीब व्यवहार करता है। इसके अलावा, मैंने यह केवल CentOS में देखा है, डेबियन / उबंटू में नहीं। शायद यह कर्नेल में एक्सएफएस संस्करण से संबंधित है, या ऐसा कुछ। कोई जानकारी नहीं।

वैसे भी, जो मेरे लिए मामला सुलझाता है। सभी सुझावों के लिए बहुत बहुत धन्यवाद :-)


अपने स्वयं के प्रश्न का उत्तर देना पूरी तरह से स्वीकार्य है
कीथ थॉम्पसन

0

प्राणी कॉल अनुमति को स्पष्ट रूप से निर्दिष्ट कर सकता है जो ओम्स्क पर पूर्वता लेता है।

आपने जवाब नहीं दिया कि आप कैसे बना रहे हैं testfile,testdir

फ़ाइल का उपयोग करके बनाएँ touch testfile, फिर अनुमतियों को सूचीबद्ध करें और पोस्ट करें


विलंब के लिए क्षमा चाहते हैं। मैंने "टच टेस्टफाइल" का उपयोग करके परीक्षण किया, और इसी तरह के परिणामों के साथ "mkdir testdir" भी। उमस्क "0000" पर सेट किया गया लगता है, क्योंकि वे 777 अनुमतियों के साथ बनाए गए हैं।
rsuarez

0

getfacl .उस निर्देशिका में प्रयास करें जिसे आप अपनी परीक्षण फ़ाइल बना रहे हैं, यह देखने के लिए कि क्या अनुमतियों को प्रभावित करने वाला एक डिफ़ॉल्ट एसीएल है।


1
नहीं, कोई डिफ़ॉल्ट ACL नहीं। यह किसी भी तरह से XFS से संबंधित प्रतीत होता है, क्योंकि यह केवल XFS संस्करणों में होता है। लेकिन फिर भी धन्यवाद।
rsuarez

-1

बस /etc/login.defs पर USERGROUPS_ENAB चर देखें

उन्हें निष्क्रिय करने के लिए टिप्पणी # USERGROUPS_ENAB हां

यदि आप भी अपने वर्तमान उपयोगकर्ता के umask को बदलना चाहते हैं, तो आपको पहले की पिछली प्रक्रिया को समाप्त करना चाहिए और उन्हें निम्न कार्य करना चाहिए।

उदाहरण के लिए 027

इको "उमस्क 027" >> ~ / .bashrc && pkill -KILL -u your_ushaame.here

echo "umask 027" >> ~ / .bashrc यह कमांड आपके प्रोफाइल के लिए एक umask डिफ़ॉल्ट मान सेट करेगा

यह आपको लॉग आउट करने के लिए मजबूर करेगा

फिर से लॉगिन करें

बस umask comand फिर से चलाएं और देखें कि क्या यह आपके लिए काम करता है

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