वास्तव में टार -p (अनुमतियों को संरक्षित करना) ध्वज क्या संरक्षित करता है?


22

-pटारबॉल बनाते और निकालते समय ध्वज वास्तव में क्या संरक्षित करता है ? क्या यह rwxअनुमतियाँ हैं जो इसे संरक्षित करती हैं?

जब मैंने htdocs/रूट के स्वामित्व वाली एक टारबॉल बनाई , तो इसे मेरे स्थानीय मशीन में डालने से स्वामित्व को रूट से मेरे उपयोगकर्ता में बदल दिया।


5
हो सकता है कि आपको पुरालेख को रूट के रूप में निकालने का प्रयास करना चाहिए। एक सामान्य उपयोगकर्ता के रूप में किसी अन्य उपयोगकर्ता के लिए अनुमतियाँ सेट करना संभव नहीं है, इसलिए मुझे लगता है कि tarऐसा करने में सक्षम नहीं होगा। कृपया मुझे बताएं कि क्या यह काम किया है।
लुई मैथिज्सेन

"स्थानीय मशीन"? कृपया स्पष्ट करें कि इस मशीन में OS क्या है?)
रिनविंड

हमें यह भी बताएं कि आप किस फाइलसिस्टम का उपयोग कर रहे हैं। स्रोत और लक्ष्य दोनों।
टेराडॉन

स्रोत: Red Hat Enterprise Linux Server release 6.5 (Santiago) लक्ष्य: Ubuntu 13.10 दोनों का उपयोग करेंGPT
nicoX

साइड नोट: tarअनुमतियाँ संरक्षित करता है। -pऔर --same-owner/ --no-same-owner(उत्तर में) निष्कर्षण झंडे हैं। संग्रह करने के दौरान उनका कोई प्रभाव नहीं है
Fr0zenFyr

जवाबों:


19

स्वामित्व और अनुमतियां दो अलग-अलग चीजें हैं। -pध्वज को बरकरार रखता है अनुमतियाँ । * Nix सिस्टम पर, नियमित उपयोगकर्ता उस उपयोगकर्ता के लिए फ़ाइल स्वामित्व नहीं बदल सकते हैं जो स्वयं नहीं है।

जैसा यहाँ बताया गया है :

केवल फ़ाइल के उपयोगकर्ता आईडी के बराबर या उचित विशेषाधिकार के साथ एक प्रभावी उपयोगकर्ता आईडी के साथ प्रक्रियाएं फ़ाइल के स्वामित्व को बदल सकती हैं। यदि पथ के लिए _POSIX_CHOWN_RESTRICTED प्रभावी है:

  • उपयोगकर्ता आईडी बदलना उचित विशेषाधिकार के साथ प्रक्रियाओं तक सीमित है।

  • समूह आईडी को बदलना एक प्रभावी उपयोगकर्ता आईडी के साथ एक प्रक्रिया की अनुमति है जो फ़ाइल के उपयोगकर्ता आईडी के बराबर है, लेकिन उपयुक्त विशेषाधिकार के बिना, यदि और केवल यदि मालिक फ़ाइल के उपयोगकर्ता आईडी या (uid_t) -1 के बराबर है और समूह बराबर है या तो कॉलिंग प्रक्रिया 'प्रभावी समूह आईडी या उसके पूरक समूह आईडी में से एक के लिए।

इसके पीछे के तर्क को इस यूनिक्स और लिनक्स उत्तर में @Gilles द्वारा अच्छी तरह से समझाया गया है :

इस प्रतिबंध का कारण यह है कि किसी अन्य उपयोगकर्ता को एक फ़ाइल देने से बुरी चीजें असामान्य रूप से हो सकती हैं, लेकिन फिर भी महत्वपूर्ण स्थिति। उदाहरण के लिए:

  • यदि किसी सिस्टम में डिस्क कोटा सक्षम है, तो ऐलिस केवल उसके द्वारा सुलभ एक निर्देशिका के तहत एक विश्व-लेखन योग्य फ़ाइल बना सकता है (इसलिए कोई और उस विश्व-योग्य निर्देशिका तक पहुंच नहीं सकता), और फिर उस फ़ाइल को किसी अन्य उपयोगकर्ता के स्वामित्व वाले बिल के लिए रन करें। । फ़ाइल तब बिल की डिस्क कोटा के तहत गिना जाएगा भले ही केवल ऐलिस फ़ाइल का उपयोग कर सकता है।
  • यदि ऐलिस बिल के लिए एक फ़ाइल देता है, तो कोई भी निशान नहीं है कि बिल ने उस फ़ाइल को नहीं बनाया है। यह समस्या हो सकती है यदि फ़ाइल में अवैध या अन्यथा डेटा शामिल है।
  • कुछ कार्यक्रमों के लिए अनुरोध करने के लिए उनकी इनपुट फ़ाइल किसी विशेष उपयोगकर्ता से संबंधित होती है (उदाहरण के लिए, फ़ाइल में कुछ निर्देश होते हैं जो प्रोग्राम उस उपयोगकर्ता की ओर से करेगा)। यह आमतौर पर एक सुरक्षित डिजाइन नहीं है, क्योंकि भले ही बिल ने एक फाइल बनाई है जिसमें सिंटैक्टिक रूप से सही निर्देश हैं, वह इस विशेष समय में उन्हें निष्पादित करने का इरादा नहीं कर सकता है। फिर भी, ऐलिस को मनमाने ढंग से सामग्री के साथ एक फ़ाइल बनाने की अनुमति देता है और इसे बिल से इनपुट के रूप में लिया जाता है, इससे चीजें खराब हो सकती हैं।

इसलिए, भले ही आप टार के --same-ownerझंडे का उपयोग करते हैं, फिर भी आपको rootस्वामित्व को संरक्षित करने के लिए फ़ाइलों को निकालने की आवश्यकता होगी । वह ध्वज डिफ़ॉल्ट रूप से चालू है root, इसलिए आप जो चाहते हैं वह है:

sudo tar xpf foo.tgz

9

टार के लिए 2 और विकल्प हैं जो दिलचस्प हैं:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

दूसरा एक डिफ़ॉल्ट है जिससे आप --same-ownerअपने उपयोगकर्ता को बचाने के लिए जोड़ सकते हैं । आपको शायद ऐसा करना पड़ेगा sudo

इसके अलावा: यह वसीयत- POSIX का समर्थन करने वाले सिस्टम पर काम करता है। और उबंटू के अलावा अन्य ऑपरेटिंग सिस्टम में ये 2 विकल्प नहीं हो सकते हैं (वे मानक नहीं हैं)।


3
--same-ownerगैर-रूट उपयोगकर्ताओं के लिए नहीं होगा काम करते हैं, वे किसी को भी, लेकिन खुद को स्वामित्व निर्धारित करने का अधिकार नहीं होगा। इसे POSIX द्वारा परिभाषित किया गया है ।
टेराडॉन

4

मालिक को रूट के रूप में चलाने के लिए या निकालने के दौरान -p-स्वामी ध्वज के साथ -same-स्वामी ध्वज का उपयोग करें।


3
इसे किसी भी स्थिति में जड़ के रूप में चलाने की आवश्यकता है। गैर-रूट उपयोगकर्ता फ़ाइल स्वामित्व को अन्य उपयोगकर्ताओं के लिए परिवर्तित नहीं कर सकते हैं।
टेराडॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.