अप्रकाशित उपयोगकर्ता फ़ाइल स्वामित्व को क्यों नहीं बदल सकता है?


15

चाउन (2) से:

केवल एक विशेषाधिकार प्राप्त प्रक्रिया (लिनक्स: CAP_CHOWN क्षमता वाला एक) एक फ़ाइल के मालिक को बदल सकता है। फ़ाइल का स्वामी फ़ाइल के समूह को किसी भी समूह में बदल सकता है, जिसके स्वामी सदस्य हैं। एक विशेषाधिकार प्राप्त प्रक्रिया (लिनक्स: CAP_CHOWN के साथ) समूह को मनमाने ढंग से बदल सकता है।

इस प्रतिबंध का कारण क्या है? क्यों एक अनपेक्षित उपयोगकर्ता अपने स्वामित्व वाली फ़ाइल के फ़ाइल स्वामित्व को नहीं बदल सकता है (अर्थात। नहीं / आदि / छाया)?

$ touch blah
$ chown root:root blah
chown: changing ownership of `blah': Operation not permitted

जवाबों:


27

उपयोगकर्ताओं को "दूर दे" फ़ाइलों की अनुमति देकर आप OS की विभिन्न विशेषताओं से बचते हैं। जैसे कि:

Taking up another user's disk quota.
Impersonating another user (or even root) via setuid.
Having insufficient privileges to undo a mistaken chown.
Making it appear that someone else had created a given file.
Setting up cron jobs to run on other user's accounts.
And many more...

8

यह लिनक्स डिजाइनरों की एक व्यक्तिगत पसंद है कि इसे अनुमति न दें - सभी छद्म सुरक्षा कारण, दिए गए , विशिष्ट हैं, क्योंकि इसमें यूनिक्स सिस्टम हैं जो इसे अनुमति देते हैं।

मुझे लगता है कि यह कार्यप्रणाली 'सिस्टम-वी' (एटीएंडटी) या बर्कले के यूनिक्स (बीएसडी) का अनुसरण करती है या नहीं ...

उल्लिखित अन्य सुरक्षा मुद्दों के लिए:

  • किसी अन्य उपयोगकर्ता (या यहां तक ​​कि रूट) को सेतु के माध्यम से छापना।

    गैर-मुद्दा: 'स्वामी' को बदलना किसी भी 'सेटएक्सआईडी' बिट्स (यू / जी) को साफ करता है

  • एक गलत तरीके से चेज करने के लिए अपर्याप्त विशेषाधिकार होना

    वास्तव में 'सुरक्षा जोखिम' नहीं है, लेकिन, यह उन प्रणालियों पर हो सकता है जो उपयोगकर्ता को बदलने की अनुमति देता है, आप इसे वापस बदल सकते हैं यदि यह एक निर्देशिका में है जो आपके पास है, अन्य बुद्धिमान: 'सावधान रहें'!

  • यह दिखाते हुए कि किसी और ने दी गई फ़ाइल बनाई थी।

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

  • अन्य उपयोगकर्ता के खातों पर चलाने के लिए क्रॉन जॉब्स स्थापित करना।

    फिर से, काम नहीं करेगा - चूँकि क्रोनडिर्स उपयोगकर्ता के स्वामित्व में हैं और अन्य उपयोगकर्ताओं द्वारा पठनीय होने के लिए भी निर्धारित नहीं हैं , इसलिए अकेले रहने दें।

  • अगर कोई स्वामित्व बदल सकता है, तो कोई भी सिस्टम पर किसी भी फ़ाइल तक पहुंच प्राप्त करने की अनुमति बदल सकता है।

    नहींं: केवल यदि उपयोगकर्ता उस फ़ाइल वाली निर्देशिका का मालिक है। यानी मैं 'पासवार्ड' नामक एक फाइल रूट कर सकता हूं, लेकिन मैं इसे / etc / में स्थानांतरित नहीं कर सकता / सकती जब तक कि मेरे पास / etc / के लिए अनुमति न हो।

  • कोटा

    एक संभावित वैध बिंदु - यदि आप कोटा का उपयोग करते हैं, लेकिन ऐसा लगता है कि यह पता लगाना आसान होगा कि क्या आप होम-डीआईआर द्वारा डिस्क स्थान को योग करते हैं; केवल समस्या डायरियों में होगी जो कई उपयोगकर्ताओं द्वारा लिखने योग्य हैं। किस मामले में, शायद उस 'डीर' के मालिक द्वारा जा रहे हैं। यह उन प्रणालियों पर मामला हो सकता है जो फ़ाइलों को 'दूर देने' का समर्थन करते हैं, कि आप केवल उन्हीं निर्देशिकाओं में यह कर सकते हैं कि आप 'स्वयं' हैं, लेकिन यह एक लंबा समय रहा है क्योंकि मैं वास्तव में एक ऐसी प्रणाली पर रहा हूं जो इसे अनुमति देता है, इसलिए मुझे सटीक प्रतिबंध याद नहीं हैं।

मुझे याद है कि 'फाइलें दूर करने' की अनुमति देने के लिए कुछ 'ट्रेड-ऑफ' किया जा रहा है ... उदाहरण के लिए - सिस्टम पर जिसने अनुमति दी थी, कुछ और को अनुमति नहीं दी गई थी कि लिनक्स की अनुमति नहीं है, लेकिन याद नहीं है कि क्या बंद था हाथ ...

मैं कहूंगा कि उपरोक्त 'उत्तर' को उत्तर के रूप में चिह्नित किया जाना चाहिए, क्योंकि यह वास्तविक उत्तर नहीं है। IT का डिज़ाइन निर्णय अधिक है - मुझे नहीं पता कि ट्रेडऑफ क्या था।

ऐसे सुरक्षा मुद्दे हो सकते हैं जो ऊपर नहीं उठाए गए हैं, जो वैध चिंताएँ होंगी, लेकिन ऊपर वाले मान्य नहीं हैं।

IMO, यह "/ proc" में एक सिस्टम-सेटल होने योग्य 'मूल्य' होना चाहिए, लेकिन आम तौर पर बोलते हुए, मुझे लगता है कि ज्यादातर लोग इस बात की परवाह नहीं करते हैं।

अगर इसके लिए एक मजबूत आवश्यकता थी, तो 'चाउन' को सुरक्षा-बढ़ाने और इसे संशोधित करने के लिए संशोधित किया जा सकता था और फिर इस तरह की नीति को लागू करने के लिए सक्षम करने के लिए 'रूट' सेट करें।


कोटा हमेशा फ़ाइल स्वामित्व पर आधारित होता है , स्थान पर नहीं । अन्यथा कोई भी सब कुछ अंदर रख सकता था /tmp
user1686

+1, आपको यह सही लगता है :)। OpenSolaris सिस्टम (जो वास्तव में एक सिस्टम V वंशज है) पर आप इसे एक mountविकल्प के माध्यम से सेट कर सकते हैं (यह सेटिंग इसलिए आपके सिस्टम-सेटलेबल वैल्यू सुझाव के अनुसार सिस्टम-वाइड होने के बजाय सिंगल माउंट पॉइंट तक सीमित हो सकती है): rstchown(डिफ़ॉल्ट ) फ़ाइल के स्वामी को रूट उपयोगकर्ता तक सीमित करने के लिए, norstchownअप्रभावी उपयोगकर्ताओं को अपनी फ़ाइलों के स्वामी को बदलने की अनुमति देने के लिए (वे इसे वापस नहीं बदल सकते हैं)।
श्वेतवर्ण वुल्फ

6

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


2
सही। मैंने यह स्पष्ट करने के लिए प्रश्न को संशोधित किया कि मैं उन फ़ाइलों का उल्लेख कर रहा हूं जो उपयोगकर्ता के पास हैं और कोई फ़ाइल नहीं है।
अलेक्जेंड्रू

1
@ अलेक्सांद्रु: दुर्भावनापूर्ण उपयोगकर्ता myTrojan.shको रूट के स्वामित्व में बदलने और SUID ध्वज रखने के बारे में सोचें ।
बेंजामिन बन्नियर

@ हांक: अब समझ में आता है।
अलेक्जेंड्रू

5

क्योंकि तब उपयोगकर्ता फाइल सिस्टम कोटा से बाहर निकल सकता है। अगर मुझे 100MB का कोटा मिल गया है और आपको 100MB का कोटा मिल गया है, तो मैं 100MB अपलोड कर सकता हूं, chmod a + r, आपको chown, फिर दूसरा 100MB अपलोड कर सकता हूं।

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