क्या रूट के रूप में किसी दूरस्थ फ़ाइल को संपादित किया जा सकता है?


10

मुझे यह प्रश्न मिला है जो बताता है कि vim का उपयोग करके किसी दूरस्थ फ़ाइल को कैसे संपादित किया जाए:

vim scp://user@myserver[:port]//path/to/file.txt

क्या sudoरिमोट होस्ट पर रूट (के माध्यम से ) ऐसा करना संभव है ?

मैंने दूरस्थ होस्ट पर रूट अनुमतियों के साथ एक फ़ाइल बनाने की कोशिश की है और इसे ऊपर से संपादित किया है। विम सामग्री को देख सकता है, उसे संपादित कर सकता है, और इसे बचा सकता है लेकिन दूरस्थ होस्ट पर कुछ भी नहीं बदलता है (शायद इसलिए क्योंकि विम केवल अपनी अस्थायी फ़ाइल को सहेज रहा है और फिर उसे वापस देने के लिए scp को दे रहा है?)

मेरे उपयोगकर्ता द्वारा सहेजी गई फ़ाइल के साथ ऐसा करते समय यह अपेक्षित रूप से व्यवहार करता है।

मेरा SSH प्रमाणित करने के लिए एक कुंजी का उपयोग करता है और रिमोट सर्वर में मेरे sudo एक्सेस के लिए NOPASSWD है

यह प्रश्न समान है, लेकिन वोटों के साथ एकमात्र उत्तर कठपुतली का उपयोग करता है जो निश्चित रूप से वह नहीं है जो मैं उपयोग करना चाहता हूं।


संपादित करें: नीचे @ drewbenn की टिप्पणी के जवाब में, संपादन के लिए यहां मेरी पूरी प्रक्रिया है:

vim scp://nagios//tmp/notouch

/tmp/notouchरूट के स्वामित्व वाली फ़ाइल कहां है, मुझे vim जल्दी दिखा

:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'

यह पाठ के साथ एक खाली काली स्क्रीन उत्पन्न करने के लिए स्वचालित रूप से चला जाता है

"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue

एंटर दबाने पर मुझे फाइल को एडिट करने की सुविधा मिलती है

सहेजना शुरुआत के समान उसी तरह के scp कमांड को पॉप करता है, जो जल्दी और स्वचालित रूप से चला जाता है (समय में इसे पढ़ना मुश्किल है लेकिन scp और / tmp / ... फाइलें निश्चित रूप से हैं)


2
बस sshसर्वर के लिए और वहाँ फ़ाइल को संपादित करें (के साथ visudo, या जो भी)। किसी भी चीज के सुरक्षा निहितार्थ हैं।
सत

@SatoKatsura मैं आपके स्थानीयहोस्ट पर दूरस्थ फ़ाइल की एक प्रति होने के अलावा किसी भी वास्तविक सुरक्षा निहितार्थ को देखने में विफल रहता हूं। मैं संस्करण के कारण और अपनी .vimrcफ़ाइल के लिए मेरे स्थानीय संस्करण का उपयोग करना चाहता हूं
मिच

इसके बजाय उत्पादन के लिए फ़ाइलों को धकेलने (या खींचने) के लिए कॉन्फ़िगरेशन प्रबंधन का उपयोग क्यों नहीं किया जाता है? तब आप बस अपने स्थानीय संपादक का उपयोग कर सकते हैं।
thrig

@drewbenn मैंने एक संपादन के साथ सवाल को अद्यतन किया है जिसका उपयोग मैं पूरी प्रक्रिया दिखा रहा हूं
मिच

हम्म् ... यह काम नहीं करता है? ssh -t host sudo vim file?
Kusalananda

जवाबों:


9

मैं यह कहने जा रहा हूं कि यह संभव नहीं है क्योंकि vimदूरस्थ कमांड निष्पादित नहीं कर रहा है। यह बस scpफ़ाइल को कॉपी करने के लिए उपयोग कर रहा है, इसे स्थानीय रूप से संपादित करें और scpजब यह किया जाता है तब वापस। जैसा कि इस प्रश्न के sudo माध्यम से कहा गया है, यहscp संभव नहीं है और यह अनुशंसा की जाती है कि आप या तो अनुमतियों को संशोधित करें जो आप चाहते हैं या दूरस्थ मशीन के पार ssh करें।


मैं जिस उत्तर की आशा कर रहा था, वह सही नहीं है। शायद मैं इसे पाने के लिए एक प्लगइन लिखूँगा ..
मिच

अरे @ मिच, क्या आपको अपनी समस्या का समाधान करने के लिए कोई समाधान / प्लगइन मिला? मैं बिल्कुल वैसी ही स्थिति का अनुभव कर रहा हूँ! धन्यवाद!
ब्रूनो बेलोटी

4

स्वीकृत उत्तर की तरह, मुझे नहीं लगता कि यह सीधे संभव है।

हालाँकि, मैं अभी भी अपने लक्ष्य को पूरा करने के लिए कम से कम दो तरीके देखता हूँ।

दूरस्थ रूप से चल रहा है

ssh user@myserver sudo vim /some/file

इसके नुकसान हैं:

  • विम के साथ आपकी बातचीत नेटवर्क पर जाती है। महत्वपूर्ण अंतराल कष्टप्रद होगा, और यदि आपका कनेक्शन मर जाता है, तो विम (अंततः) करता है।
  • यह आपके स्थानीय विम कॉन्फिग का उपयोग नहीं करेगा, लेकिन रिमोट के रूट का विम कॉन्फिग।

लेकिन इसमें काम करने का फायदा है।

विम के बाहर scp कर रहा है

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

निम्नलिखित शेल स्क्रिप्ट की तरह कुछ काम कर सकता है (ध्यान दें, पूरी तरह से अप्रयुक्त!):

#! /bin/sh

TMPFILE=$(mktemp)
ssh -- "$1" sudo cat "'$2'" > ${TMPFILE}
vim ${TMPFILE}
ssh -- "$1" "sudo tee '$2' > /dev/null" < ${TMPFILE} && \
  rm -f ${TMPFILE}

यह आपको कुछ ऐसा करने की अनुमति देगा rvim user@myserver /some/file। यहां तक ​​कि अगर दूसरी हस्तांतरण विफल हो जाती है, तो यह स्थानीय प्रतिलिपि भी रखता है, इसलिए आप अपने परिवर्तनों को नहीं खोते हैं।

स्क्रिप्ट कई सुधारों का उपयोग कर सकती है (बहुत कम त्रुटि जाँच पर), लेकिन यह एक प्रारंभिक बिंदु है।


3

आपको रूट पासवर्ड की आवश्यकता होगी या आपकी सार्वजनिक ssh कुंजी ~ रूट / .ssh / अधिकृत_की में होगी। एक बार जब आपके पास था, तो आप शायद कर सकते थे

vim scp://root@nagios//tmp/notouch

नीचे पंक्ति: यह प्रभावी रूप से सिर्फ एक शॉर्टकट है

scp root@nagios:/tmp/notouch /tmp/notouch
vim /tmp/notouch
scp /tmp/notouch root@nagios:/tmp/notouch

यदि आपके पास ऐसा करने के लिए आवश्यक पहुंच है, तो आपके पास विम के नेटवर्क एक्सेस प्लगइन का उपयोग करने के लिए आवश्यक एक्सेस है। यदि नहीं, तो आप नहीं।

के रूप में Zachary ब्रैडी बताते हैं, sudoशामिल नहीं है। आपको रूट खाते में ssh एक्सेस की आवश्यकता होगी।

या तुमने कोशिश की?


1
मेरे पास रूट पासवर्ड नहीं है, और मुझे यकीन नहीं है कि मैं अपनी कुंजी को उन लोगों से अनुमति के बिना सहज महसूस कर रहा हूं जो सर्वर के मालिक हैं। सच्चा शॉर्टकट जो मेरे लिए कर रहा है वह मुझे ssh-ing, sudo cp-ing, scp-ing, edit, scp-ing, ssh-ing, sudo cp-ing (जैसा कि मेरा उपयोगकर्ता फ़ाइल नहीं पढ़ सकता है) से बचा रहा है। sshfs यहां जाने का रास्ता हो सकता है
मिच

एक अच्छा मौका है कि यदि आप ssh को रूट तक पहुँच नहीं है, तो sshfs या तो काम नहीं करेगा। दूरस्थ फ़ाइल सिस्टम को संभवतः आपकी अनुमति से ही माउंट किया जाएगा। मुझे लगता है कि इस बिंदु पर, आपका एकमात्र विकल्प हैssh remotesystem sudo vim file
एडवर्ड फल्क

आप सही कह रहे हैं - sshfs काम नहीं करता है (और आपने मुझे बताया कि मैंने गलती से खुद के लिए फ़ाइलों का एक गुच्छा काट लिया था ... जो नहीं होना चाहिए था ...) हालांकि मुझे लगा कि यह काम कर रहा है
मिच

1
@ मिच - सर्वर का मालिक होने वाले लोगों ने आपको एक उपयोगकर्ता खाता दिया, और, मेरा मानना ​​है कि आप उस खाते का उपयोग करने के लिए जिम्मेदार हैं। आप वहां एक सार्वजनिक कुंजी रख रहे हैं, जो उस खाते तक पहुंच के साथ कोई भी हो सकता है। आप उस खाते की अनुमतियों को निजी कुंजी के कब्जे में बांध रहे हैं, जितना कि पासवर्ड के ज्ञान की अनुमति देता है। यानी सर्वर के बिंदु के रूप में एक कुंजी होने या पासवर्ड जानने के बीच कोई अंतर नहीं है।
grochmal

नीचे पंक्ति: मुझे लगता है कि आप उस सर्वर पर अपनी सार्वजनिक कुंजी डालने में संकोच करने के लिए सही हैं। मुझे लगता है कि आप ssh / sudo vim
Edward Falk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.