जब आप दूरस्थ रूप से स्थानीय रूप से कॉपी कर रहे हों तो scp का सामान्य रूप है:
scp localfile username@remotehost:/some/remote/directory
इस स्थिति में, आप बता रहे हैं कि आप username
रिमोट सिस्टम पर लॉग इन करना चाहते हैं , और यह है कि उपयोगकर्ता नाम के साथ लिखा जाएगा। आपके उदाहरण में सबसे अधिक संभावना है, आपने उस उपयोगकर्ता का उपयोग किया था जब आप फ़ाइल को कंप्यूटर बी में भेज रहे थे।
यदि आप किसी दूरस्थ फ़ाइल को किसी लोकलहोस्ट को कॉपी कर रहे हैं, जैसे:
scp username@remotehost:/some/remote/file /some/local/directory
इस स्थिति में, आप username
दूरस्थ सिस्टम के रूप में लॉगिन करते हैं , और फिर इसे स्थानीय रूप से उस उपयोगकर्ता के रूप में लिखते हैं, जैसे आप scp कमांड चला रहे हैं। यह उदाहरण आपके द्वारा चलाए जा रहे सिस्टम के लिए दूरस्थ होस्ट से फ़ाइल की प्रतिलिपि बना देगा, जैसा कि आप वर्तमान में लॉग इन किए गए उपयोगकर्ता के रूप में करते हैं (क्योंकि लेखन वर्तमान में उपयोगकर्ता द्वारा लॉग इन किया जाएगा)। यह रिमोटहोस्ट पर कुछ भी प्रभावित नहीं करेगा, क्योंकि आप केवल वहां से फाइल पढ़ रहे हैं, और इसे स्थानीयहोस्ट पर कॉपी कर रहे हैं। चूंकि आप दूरस्थ फ़ाइल को पढ़ने में सक्षम हैं, इसलिए स्थानीय फ़ाइल में आपके लिए लिखने की अनुमति है, क्योंकि आप फ़ाइल को स्थानीय रूप से लिख रहे हैं।
दूसरा तरीका रखो - फ़ाइल का मालिक आम तौर पर फ़ाइल के लेखक से मेल खाएगा। इसलिए, यदि आप userA के रूप में लॉग इन हैं, और एक फाइल लिखते हैं, तो मालिक userA होगा। एक सरल उदाहरण कुछ इस तरह हो सकता है:
user@server:~$ ls -l /var/log/syslog
-rw-r----- 1 syslog adm 6615 Apr 9 17:09 /var/log/syslog
ध्यान दें कि यह फ़ाइल syslog के स्वामित्व में है, लेकिन यह किसी के द्वारा स्वीकार्य समूह में पढ़ने योग्य है, जो उपयोगकर्ता के अंतर्गत आता है। तब यदि हम फ़ाइल को उपयोगकर्ता की होम डायरेक्टरी (~ /) में कॉपी करते हैं:
user@server:~$ cp /var/log/syslog ~/
user@server:~$ ls -l ./syslog
-rw-r----- 1 user user 6615 Apr 9 17:10 ./syslog
ध्यान दें कि फ़ाइल का कॉपी किया गया संस्करण अब स्वामित्व में है user
। scp
एक ही काम कर रहा है, स्रोत या गंतव्य को छोड़कर एक अलग उपयोगकर्ता के रूप में लॉगिंग को एक अलग सिस्टम में शामिल कर सकता है।
ध्यान दें कि अनुमतियों को उपयोगकर्ता आईडी, उपयोगकर्ता के एक संख्यात्मक पुन: संयोजन के साथ ट्रैक किया जाता है। आप अपने वर्तमान यूआईडी को id
कमांड के साथ देख सकते हैं । सामान्य तौर पर, व्यक्तिगत प्रणालियों के लिए, यूआईडी सिस्टम के लिए एक ही प्रणाली नहीं होगी क्योंकि खाते साझा नहीं किए जाते हैं (जब तक कि आप एलडीएपी या समान का उपयोग नहीं कर रहे हैं)। मेरा मानना है कि परंपरागत रूप से, 0 रूट है, 1000 से कम यूआईडी सिस्टम खातों (जैसे मेल, समाचार, बिन, डेमन, आदि) के लिए आरक्षित हैं, और यह कि नियमित उपयोगकर्ता 1000 से शुरू होते हैं। जहां तक मुझे पता है, नियमित उपयोगकर्ता यूआईडी असाइन किए गए हैं क्रमिक रूप से, इसलिए यदि आपने तीन खाते बनाए हैं, तो वे संभवतः 1000, 1001 और 1002 होंगे।
रीड-ओनली फ़ाइल भेजने के अपने मूल प्रश्न पर वापस, आपको यह सुनिश्चित करना होगा कि दूरस्थ सिस्टम पर पाठक के पास फ़ाइल के मालिक के समान यूआईडी नहीं है। यदि आप (userA) userB के लिए एक फाइल तैयार कर रहे थे, तो आप कुछ ऐसा कर सकते थे:
scp localfile userA@remotehost:/some/remote/directory
इस स्थिति में, फ़ाइल का मालिक समाप्त हो जाएगा userA, (और हम जानते हैं कि userA रिमोट सिस्टम पर मौजूद है क्योंकि हम इसमें लॉग इन हैं), और userB ने लिखने की अनुमति नहीं दी होगी (फ़ाइल को मूल रूप से 755 मान लिया गया था )। संपादित करें: आपको अनुमतियों को संरक्षित करने के लिए -p की आवश्यकता हो सकती है?
बेशक, यदि उपयोगकर्ता के पास रूट या sudo अनुमतियां हैं, तो वे फ़ाइल को लिखने योग्य बनाने में सक्षम होंगे, चाहे आप कुछ भी करें।