क्या यह सच है कि एक टारबॉल बदल सकता है जहां फाइलों को निकालने के लिए उपयोग किए जाने वाले आदेशों की परवाह किए बिना इसे निकाला जाता है?


27

मेरे पास एक सहकर्मी है जो कहता है कि आपको टारबॉल निकालने में सावधानी बरतने की ज़रूरत है क्योंकि वे उन परिवर्तनों को कर सकते हैं जिनके बारे में आप नहीं जानते हैं। मैंने हमेशा सोचा था कि एक टैरबॉल केवल संपीड़ित फ़ाइलों का एक पदानुक्रम है, इसलिए यदि आप इसे / tmp / उदाहरण के लिए निकालते हैं / यह संभवतः किसी फ़ाइल को / etc / या इस तरह से कुछ भी चुपके नहीं कर सकता है।


1
आप किस ऑपरेटिंग सिस्टम के वातावरण से संबंधित हैं? GNU / Linux के टार में एक -Pविकल्प है जो इस संबंध में उसके व्यवहार को प्रभावित करता है।
जेफ स्कालर

1
मैं इस मामले में CentOS का अनुमान लगाता हूं, लेकिन मैं जानना चाहूंगा कि मुझे क्या जानना चाहिए।
एडम आर। ग्रे

1
लंबे समय तक, जीएनयू टार को इस तरह से बेवकूफ बनाया जा सकता है कि /etc/passwdइसे जड़ के रूप में चलाने की स्थिति में इसे हटाने की अनुमति दी जाए । कुछ समय के बाद, मेरा मानना ​​है कि gtarजैसी सुरक्षा मिलती है, वैसी ही मिलती है star
शास्त्री

जवाबों:


41

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

सोलारिस टार :

नामित फ़ाइलों को टर्फाइल से निकाला जाता है और वर्तमान निर्देशिका के सापेक्ष, टार्फाइल में निर्दिष्ट निर्देशिका को लिखा जाता है। निकाली जाने वाली फ़ाइलों और निर्देशिकाओं के सापेक्ष पथ नामों का उपयोग करें।

टार आर्काइव में निहित पूर्ण पथ नामों को निरपेक्ष पथ नामों का उपयोग करके अनपैक किया गया है, अर्थात अग्रणी फ़ॉरवर्ड स्लैश (/) को नहीं हटाया गया है।

पूर्ण (पूर्ण) पथ नामों के साथ टार फ़ाइल के मामले में, जैसे:

/tmp/real-file
/etc/sneaky-file-here

... यदि आप ऐसी फ़ाइल निकालते हैं, तो आप दोनों फ़ाइलों को समाप्त कर देंगे।

GNU टार :

डिफ़ॉल्ट रूप से, GNU टार /इनपुट या आउटपुट पर एक अग्रणी छोड़ देता है , और एक ..घटक वाले फ़ाइल नामों के बारे में शिकायत करता है। एक विकल्प है जो इस व्यवहार को बंद करता है:

--absolute-names

-P

फ़ाइल नामों से अग्रणी स्लैश न निकालें, और ..फ़ाइल नाम घटक वाले फ़ाइल नामों की अनुमति दें ।

... यदि आप विकल्प का उपयोग किए बिना GNU टार का उपयोग करके पूरी तरह से पथरी हुई टार फ़ाइल निकालते हैं -P, तो यह आपको बताएगा:

टार: /सदस्य नामों से प्रमुख को हटाना

और फ़ाइल को आपकी वर्तमान निर्देशिका की उपनिर्देशिकाओं में निकालेगा।

AIX टार :

इसके बारे में कुछ नहीं कहता है, और सोलारिस टार के रूप में व्यवहार करता है - यह पूर्ण / पूर्ण पथ नामों के साथ टार फ़ाइलों को बनाएगा और निकालेगा।

HP-UX टार : (बेहतर ऑनलाइन संदर्भ का स्वागत किया गया)

चेतावनी

किसी सापेक्ष स्थिति के लिए एक पूर्ण पथ नाम को पुनर्स्थापित करने का कोई तरीका नहीं है।

OpenBSD टार :

-P

पत्थरों से अग्रणी स्लैश ( /) को पट्टी न करें । डिफ़ॉल्ट प्रमुख स्लैश को स्ट्रिप करने के लिए है।

कर रहे हैं -Pविकल्प के लिए लागू किया tarहै और साथ ही MacOS, FreeBSD और NetBSD पर, एक ही अर्थ विज्ञान के साथ, इसके अलावा उस के साथ tarपर FreeBSD और MacOS "कचरे संग्रह प्रविष्टियों जिसका pathnames शामिल निकालने के लिए होगा ..बिना या जिसका लक्ष्य निर्देशिका एक सिमलिंक उसमें कोई परिवर्तन किया जाएगा" -P

schilytools star :

-/

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


2
लंबे समय तक, जीएनयू टार ने इस तथ्य को नजरअंदाज कर दिया कि एक पथ नाम जिसमें ..सुरक्षा जोखिम है, इसलिए उपयोग starया हाल ही में gtarstarउदाहरण के लिए टार अभिलेखागार पर एक नज़र डालें, जिसमें हाथ से तैयार tarहेडर शामिल हैं जो tarबिना किसी चेतावनी के फ़ाइलों को हटाने के लिए सबसे अधिक कार्यान्वयन का कारण बनते हैं ।
स्किल

@schily, जेफ के उद्धरणों के अनुसार, tarसोलारिस, AIX और HP-UX पर भी लागू नहीं होता है? यदि हां, तो केवल ग्नू टार को ही क्यों इंगित करें, खासकर यदि (फिर से ऊपर की बोली के अनुसार), तो वे स्वीकार नहीं करने के लिए बदल गए हैं ..? विकृत इनपुट वाले मुद्दे निश्चित रूप से कीड़े हैं, और मुझे लगता है कि आपने उन्हें इस तरह रिपोर्ट किया है।
ilkkachu 16

1
ऐतिहासिक टार कार्यान्वयन इस तरह की चीजों की जाँच नहीं कर रहे हैं। मुझे टिप्पणी करने की आवश्यकता थी क्योंकि एक दावा था कि जीएनयू टार बिना समस्याओं के एक विज्ञप्ति का उल्लेख किए बिना है। और BTW: उल्लेख के बिना इस तरह की एक सूची star(सबसे पुराना मुक्त कार्यान्वयन) को अपूर्ण के रूप में देखा जाना चाहिए।
स्किल

@ सामान्य रूप से, मैंने प्रमुख OS के लिए मैन पेज खोजे (जिसमें अलग-अलग टार लागू हो सकते हैं); अगर आपके पास स्टार के ऑनलाइन मैन पेज का लिंक है, तो मुझे इसे शामिल करके खुशी होगी।
जेफ स्कालर


9

टार बम के साथ होने वाली प्रफुल्लित करने वाली चीजों में से एक यह है कि वे करंट डाइरेक्टरी की अनुमतियों को टारबॉल में शामिल एक में बदल देते हैं।

उदाहरण के लिए, यदि एक टारबॉल में 'शामिल हैं।' निर्देशिका, और आप इसे / tmp में रूट के रूप में अनपैक करते हैं, यह आपके सिस्टम को किसी भी, लेकिन रूट द्वारा / tmp को अयोग्य बनाकर बर्बाद कर देगा।


और यदि आप इसे अनपैक करते हैं /, तो यह रूट डायरेक्टरी की अनुमतियों को बदल देगा, जिसके अप्रत्याशित परिणाम होंगे (मुझे याद है कि कंसोल पर लॉग इन करने पर "निष्पादित / बिन / बैश" नहीं हो सकता है, क्योंकि /मोड 770 था)।
Law29

1
मैंने आधिकारिक सॉफ्टवेयर के साथ ऐसा किया है - "रैंचर-कम्पोज़" "सम्‍मिलित" के जीथब रिलीज। टार फाइल में, उदाहरण के लिए, और nuke / tmp यदि आप उन्हें वहां निकालते हैं।
हराल्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.