एक मशीन में एक उपयोगकर्ता से दूसरे में फाइल कॉपी करना


20

टर्मिनल के माध्यम से एक ही मशीन में एक उपयोगकर्ता से दूसरे उपयोगकर्ता की किसी भी फाइल या निर्देशिका को कॉपी कैसे करें ?

मान लीजिए कि USER1 की होम डायरेक्टरी में एक फ़ाइल test.txt है। मुझे अपनी मशीन में USER2 की होम डायरेक्टरी में उस फाइल को कॉपी करना होगा। मैं इसे टर्मिनल के माध्यम से कैसे कर सकता हूं?

जवाबों:


26

यह मानते हुए कि आपके पास sudoविशेषाधिकार हैं, निम्नलिखित कमांड करेंगे।

sudo cp /home/USER1/FNAME /home/USER2/FNAME && sudo chown USER2:USER2 /home/USER2/FNAME

USER1 से USER2 में फ़ाइल की प्रतिलिपि बनाएँगे, और फिर कॉपी के स्वामी को / home / USER2 से USER2 में बदल देंगे

यदि आपके पास sudoविशेषाधिकार नहीं हैं , तो दो उपयोगकर्ताओं को यह सुनिश्चित करने की आवश्यकता होगी कि आपने USER1 निर्देशिका पर अनुमतियाँ पढ़ ली हैं, और USER2 निर्देशिका पर पहुँच लिखें। यदि आपके पास ये एक्सेस हैं, तो आप कमांड दर्ज कर सकते हैं:

cp /home/USER1/FNAME /home/USER2/FNAME

यह फ़ाइल को प्रश्न में कॉपी कर देगा, लेकिन USER2 फ़ाइल को हेरफेर करने में सक्षम नहीं हो सकता है जब तक कि उनके पास उपयुक्त अनुमति न हो।


यह केवल तभी काम करेगा जब USER1 में सुडो एक्सेस हो, जो कि बहुउद्देशीय प्रणाली में नहीं हो सकता है।
बोस्टन हाईकर

दूसरा विकल्प अपने स्वयं के फ़ोल्डर पर अनुमतियों को सेट करना होगा ताकि दूसरे उपयोगकर्ता उन्हें हड़प सकें, लेकिन यदि संभव हो तो यह विकल्प बहुत आसान है।
गीरी शूल

@BostonHiker मैंने यह धारणा बना ली थी कि कॉपी करने वाला व्यक्ति न तो USER1 है और न ही USER2, और उसके पास sudo है निजीकरण। यह शायद मेरी ओर से एक खराब धारणा है।
चार्ल्स ग्रीन

@ ग्रीन ग्रीन - कृपया अपनी मान्यताओं को बताने के लिए अपने उत्तर को संपादित करें, अन्यथा यह अधूरा / भ्रामक है।
बोस्टन हाईकर

@ बोस्तोनहिकर ने किया। मुझे ईमानदार रखने के लिए धन्यवाद।
चार्ल्स ग्रीन

6

यदि आपके पास sudo विशेषाधिकार नहीं है, लेकिन आप दो उपयोगकर्ताओं के साथ लॉगिन कर सकते हैं तो आप लोकलहोस्ट के साथ scp का उपयोग कर सकते हैं:

scp file1 user2@localhost:/home/user2/

आपको क्या लगता है कि यह एक दूरस्थ होस्ट के बारे में है या इसमें एक SSH / SFTP सर्वर है जो प्रश्न में मशीन पर चल रहा है?
डेविड फ़ॉस्टर

1
मान लें कि आपने SSH को स्थापित किया है
जोर से


1

मान लें कि आपके पास या तो ssh इंस्टॉल नहीं है, या आप चाबियाँ / रहस्य साझा नहीं करना चाहते हैं।

मान लीजिए कि user1 Group1 में है, और user2 Group2 में है, और दोनों user1! = User2 और group1! = Group2 दोनों में हैं।

एक साझा समूह बनाएं, group3s।

addgrp group3

दोनों उपयोगकर्ता 1 और user2 को group3s में जोड़ें।

एक पारस्परिक रूप से सुलभ जगह में एक निर्देशिका बनाएं, जहां एक उपयोगकर्ता का मालिक है, लेकिन ग्रूव्स का समूह स्वामित्व है।

#as user1,
mkdir $place/shared && chown user1.group3s $place/shared && chmod 770 $place/shared;
#as user1 or user2,
cp $file $place/shared && chgrp $place/shared/$file && chmod 660 $place/shared/$file

लेकिन, मान लीजिए कि आप नए, साझा समूह नहीं बना सकते हैं, और दोनों उपयोगकर्ताओं को उस समूह में रख सकते हैं?

निर्देशिका बनाएं और इसे 770 अनुमतियाँ दें,

mkdir $place/shared && chown user1.group1 $place/shared && chmod 770 $place/shared;

फिर, रूट / व्यवस्थापक के रूप में, समूह स्वामित्व को अन्य उपयोगकर्ता के समूह में बदलें,

sudo bash
chgrp group2 $place/shared && chmod g+s $place/shared

कमांड chmod g + s सेटगिड बिट सेट करता है ताकि डायरेक्टरी में रखी गई फाइलों में ग्रुप 2 में ग्रुप ओनरशिप सेट हो।


0

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

है USER2(चलो उसे बॉब कहते हैं) निम्नलिखित कमांड चलाएं (आप /tmpकिसी भी निर्देशिका के साथ बदल सकते हैं जिसे दोनों उपयोगकर्ताओं के पास लिखने की अनुमति है, लेकिन /tmpआदर्श है क्योंकि डिफ़ॉल्ट रूप से यह चिपचिपा है, जो दुर्भावनापूर्ण उपयोगकर्ता को इस प्रक्रिया को प्रस्तुत करने से रोकता है। बॉब द्वारा कि विश्व-पठनीय भी काम करता है):

[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt

यह एक ऐसी फ़ाइल बनाता है जो विश्व-योग्य है, लेकिन पठनीय नहीं है।

फिर USER1(चलो उसे ऐलिस कहते हैं) चलाएं (यदि आप पागल हैं, तो ऐलिस अनुमतियों की जांच कर सकते हैं पहले सुनिश्चित करें कि फ़ाइल बॉब के स्वामित्व में है:

[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt

यह की सामग्री को ओवरराइट करता है /tmp/test.txt। यदि आप फ़ाइल की अखंडता की जांच करना चाहते हैं, तो ऐलिस को फ़ाइल का एक हैश भी उत्पन्न करना चाहिए। उदाहरण के लिए:

[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1

आप इसके बजाय डिजिटल रूप से फ़ाइल, या इसकी अखंडता की गारंटी देने के किसी अन्य तरीके पर हस्ताक्षर कर सकते हैं।

और अंत में बॉब फ़ाइल को स्थानांतरित करता है और उसका स्वामित्व लेता है:

[bob@computer ~]$ mv /tmp/test.txt "$HOME" 
[bob@computer ~]$ chmod 600 "$HOME/test.txt"

और अगर वह पसंद करता है तो बॉब अखंडता की जांच कर सकता है। यदि हां, तो उसे यह सुनिश्चित करने के लिए जांचना चाहिए कि केवल ऐलिस लिख सकता है /tmp/test.txt

[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")

यदि फ़ाइल सही तरीके से कॉपी की गई थी, तो इसे कोई आउटपुट नहीं दिखाना चाहिए।


-1

एक उपयोगकर्ता को दूसरे उपयोगकर्ता की प्रतिलिपि बनाने से पहले आपको su उपयोगकर्ता के रूप में लॉगिन करना होगा और फिर आप कमांड cp का उपयोग करेंगे

sudo cp /home/shyam/Desktop/sparkhadoop_2.11-1.0.jar /home/hadoop/Desktop

यह स्वामित्व को स्थानांतरित नहीं करेगा, USER2लेकिन इसे वैसे rootही छोड़ दें । -1
डेविड फ़ॉस्टर

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