स्वामित्व और अनुमतियां दो अलग-अलग चीजें हैं। -p
ध्वज को बरकरार रखता है अनुमतियाँ । * Nix सिस्टम पर, नियमित उपयोगकर्ता उस उपयोगकर्ता के लिए फ़ाइल स्वामित्व नहीं बदल सकते हैं जो स्वयं नहीं है।
जैसा यहाँ बताया गया है :
केवल फ़ाइल के उपयोगकर्ता आईडी के बराबर या उचित विशेषाधिकार के साथ एक प्रभावी उपयोगकर्ता आईडी के साथ प्रक्रियाएं फ़ाइल के स्वामित्व को बदल सकती हैं। यदि पथ के लिए _POSIX_CHOWN_RESTRICTED प्रभावी है:
उपयोगकर्ता आईडी बदलना उचित विशेषाधिकार के साथ प्रक्रियाओं तक सीमित है।
समूह आईडी को बदलना एक प्रभावी उपयोगकर्ता आईडी के साथ एक प्रक्रिया की अनुमति है जो फ़ाइल के उपयोगकर्ता आईडी के बराबर है, लेकिन उपयुक्त विशेषाधिकार के बिना, यदि और केवल यदि मालिक फ़ाइल के उपयोगकर्ता आईडी या (uid_t) -1 के बराबर है और समूह बराबर है या तो कॉलिंग प्रक्रिया 'प्रभावी समूह आईडी या उसके पूरक समूह आईडी में से एक के लिए।
इसके पीछे के तर्क को इस यूनिक्स और लिनक्स उत्तर में @Gilles द्वारा अच्छी तरह से समझाया गया है :
इस प्रतिबंध का कारण यह है कि किसी अन्य उपयोगकर्ता को एक फ़ाइल देने से बुरी चीजें असामान्य रूप से हो सकती हैं, लेकिन फिर भी महत्वपूर्ण स्थिति। उदाहरण के लिए:
- यदि किसी सिस्टम में डिस्क कोटा सक्षम है, तो ऐलिस केवल उसके द्वारा सुलभ एक निर्देशिका के तहत एक विश्व-लेखन योग्य फ़ाइल बना सकता है (इसलिए कोई और उस विश्व-योग्य निर्देशिका तक पहुंच नहीं सकता), और फिर उस फ़ाइल को किसी अन्य उपयोगकर्ता के स्वामित्व वाले बिल के लिए रन करें। । फ़ाइल तब बिल की डिस्क कोटा के तहत गिना जाएगा भले ही केवल ऐलिस फ़ाइल का उपयोग कर सकता है।
- यदि ऐलिस बिल के लिए एक फ़ाइल देता है, तो कोई भी निशान नहीं है कि बिल ने उस फ़ाइल को नहीं बनाया है। यह समस्या हो सकती है यदि फ़ाइल में अवैध या अन्यथा डेटा शामिल है।
- कुछ कार्यक्रमों के लिए अनुरोध करने के लिए उनकी इनपुट फ़ाइल किसी विशेष उपयोगकर्ता से संबंधित होती है (उदाहरण के लिए, फ़ाइल में कुछ निर्देश होते हैं जो प्रोग्राम उस उपयोगकर्ता की ओर से करेगा)। यह आमतौर पर एक सुरक्षित डिजाइन नहीं है, क्योंकि भले ही बिल ने एक फाइल बनाई है जिसमें सिंटैक्टिक रूप से सही निर्देश हैं, वह इस विशेष समय में उन्हें निष्पादित करने का इरादा नहीं कर सकता है। फिर भी, ऐलिस को मनमाने ढंग से सामग्री के साथ एक फ़ाइल बनाने की अनुमति देता है और इसे बिल से इनपुट के रूप में लिया जाता है, इससे चीजें खराब हो सकती हैं।
इसलिए, भले ही आप टार के --same-owner
झंडे का उपयोग करते हैं, फिर भी आपको root
स्वामित्व को संरक्षित करने के लिए फ़ाइलों को निकालने की आवश्यकता होगी । वह ध्वज डिफ़ॉल्ट रूप से चालू है root
, इसलिए आप जो चाहते हैं वह है:
sudo tar xpf foo.tgz
tar
ऐसा करने में सक्षम नहीं होगा। कृपया मुझे बताएं कि क्या यह काम किया है।