एक निर्देशिका की प्रतिलिपि कैसे करें जो रूट एक निर्देशिका तक नहीं पहुंच सकता है जो केवल रूट तक पहुंच सकता है?


11

मेरे पास nfs माउंट पर एक निर्देशिका है, जो सर्वर पर है /home/myname/.rubies

रूट इस निर्देशिका तक नहीं पहुँच सकते:

[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
  File: `/home/mitchell.usher/.rubies'
  Size: 4096            Blocks: 8          IO Block: 32768  directory
Device: 15h/21d Inode: 245910      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (  970/mitchell.usher)   Gid: (  100/   users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000

[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied

मैं उस निर्देशिका के भीतर से कुछ कॉपी करने का प्रयास कर रहा हूं /optजिसमें केवल रूट की पहुंच है:

[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied

[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied

जाहिर है मैं निम्नलिखित कर सकता हूं (और मैंने जो कुछ समय के लिए किया है):

[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/

क्या ऐसा करने का कोई तरीका है जो इसे एक मध्यस्थ कदम के रूप में कॉपी करना या अनुमतियों को बदलना शामिल नहीं करेगा?


cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /optयह काम नहीं करेगा? यदि नहीं, तो क्यों?
मेलबर्सलान

@MelBurslan वही है जो मैंने किया था, जैसा कि प्रश्न में कहा गया है। लेकिन मान लीजिए कि यह एक 50 जीबी फ़ाइल है जो फाइलसिस्टम पर कहीं और फिट नहीं होगी, तो मैं नहीं कर पाऊंगाcp <file> /tmp/tmpfile
मिच

जवाबों:


29

आप tarएक बफर प्रक्रिया के रूप में उपयोग कर सकते हैं

cd .rubies
tar cf - ruby-2.1.3 | ( cd /opt && sudo tar xvfp - )

tarआप के रूप में पहला चलता है और इसलिए अपने घर निर्देशिका पढ़ सकते हैं; के tarतहत दूसरा चलता है sudoऔर इसलिए लिख सकते हैं /opt


1
यह स्मृति पर कैसे है? अगर मेरे पास 10 जीबी फ़ाइल है, तो क्या यह पाइप और अन-टार्स से पहले 10 जीबी मेमोरी भरने वाला है, या यह टार के रूप में अन-टार होगा?
मिच

5
वे समानांतर में चलते हैं; एक विशिष्ट पाइप में 64Kbyte बफर है। कुछ भी नहीं के बारे में चिंता करने के लिए :-) unix.stackexchange.com/questions/11946/… पाइप के आकार के विवरण के लिए।
स्टीफन हैरिस


cpioएक ही तरह से इस्तेमाल किया जा सकता है।
टोबे स्पाइट

यदि आपके पास GNU टार है, तो आप -Cनिर्देशिका (यानी tar cf - ruby-2.1.3 | sudo tar -C /opt xpf -) बदलने के लिए अपने तर्क का उपयोग करके उपधारा को बचा सकते हैं । यह उल्लेख के लायक हो सकता है कि आप यह सुनिश्चित करना चाहते हैं कि sudoआपका पासवर्ड (जैसे एक sudoersप्रविष्टि या कैश्ड क्रेडेंशियल्स के माध्यम से ) नहीं पूछा जाएगा ।
टोबी स्पाईट

6

आप उपयोग rsyncकर सकते हैं या स्थानीय निर्देशिका scpसे कॉपी कर सकते हैं user@localhost

इसके लिए उदाहरण rsync:

# rsync "$real_user@localhost:$PWD/.rubies/ruby-2.1.3" /opt

आप वैकल्पिक रूप से कर सकते हैं

$ rsync .rubies/ruby-2.1.3 "root@localhost:/opt"

यदि आप रूटहोस्ट को सीधे लोकलहोस्ट की अनुमति देते हैं (अनुशंसित नहीं है, तो हम सामान्य रूप से रूट एक्सेस को प्राथमिकता देते हैं sudo)।


-4

आप FAT (या जो भी) में दूसरी प्रविष्टि कर सकते हैं।
मैं अपनी HOSTSफाइल के लिए ऐसा करता हूं । मेरे पास एक लेखन योग्य निर्देशिका में एक लिंक है जो फ़ाइल को संदर्भित करता है और इसकी अलग-अलग अनुमतियाँ हैं, इसलिए मेरे पास है /Hosts/HOSTSकि मैं आसानी से संशोधित कर सकता हूं, और परिवर्तन दोनों (यानी "एक") फ़ाइल (एस) में डाल दिए जाते हैं। यह 1 फ़ाइल के लिए 2 प्रविष्टियाँ है। मुझे कमांड याद नहीं है, क्षमा करें।

आपके लिए, आप /optसभी फ़ाइलों के लिए एक लिंक बनाते हैं .rubies, और जब आप किसी भी चीज़ को बदलते हैं /opt, तो यह उसी फ़ाइल के रूप में होती है .rubies


4
यह गलत और भ्रामक है, इसके अलावा सवाल का जवाब नहीं।
वाइल्डकार्ड

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

धन्यवाद वाइल्डकार्ड, मेरे पास मेरे जवाब में एक लाइन थी कि फड़ का गुच्छा मिल रहा था लेकिन माइकल ने सुधार किया तो इसे संपादित किया गया। : पी
इंजीनियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.