Vim একটি রুট হিসাবে একটি দূরবর্তী ফাইল সম্পাদনা করতে পারেন?


10

আমি এই প্রশ্নটি পেয়েছি যা ব্যাখ্যা করে কীভাবে উইম ব্যবহার করে কোনও দূরবর্তী ফাইল সম্পাদনা করতে হবে:

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

sudoদূরবর্তী হোস্টে রুট (মাধ্যমে ) এটি করা কি সম্ভব ?

আমি দূরবর্তী হোস্টে মূল অনুমতি নিয়ে একটি ফাইল তৈরি করার চেষ্টা করেছি এবং উপরেরটি দিয়ে এটি সম্পাদনা করেছি। ভিম সামগ্রীটি দেখতে পারে, এটি সম্পাদনা করতে পারে এবং এটি সংরক্ষণ করতে পারে তবে দূরবর্তী হোস্টে কোনও পরিবর্তন হয় না (সম্ভবত কারণ ভিম কেবল তার টেম্প ফাইলটি সংরক্ষণ করছে এবং তারপরে পিছনে রাখতে স্কিপটিকে দিচ্ছে?)

আমার ব্যবহারকারীর দ্বারা সংরক্ষিত কোনও ফাইলের সাথে এটি করার সময় এটি প্রত্যাশার সাথে আচরণ করে।

আমার এসএসএইচটি প্রমাণীকরণের জন্য একটি কী ব্যবহার করে এবং দূরবর্তী সার্ভারটিতে আমার সুডো অ্যাক্সেসের জন্য NOPASSWD রয়েছে

এই প্রশ্নটি একই, তবে ভোটের একমাত্র উত্তরটি পুতুল ব্যবহার করে যা অবশ্যই ব্যবহার করতে চাই না।


সম্পাদনা করুন: নীচে @ ড্র্রুবেনের মন্তব্যের জবাবে, সম্পাদনার জন্য আমার এখানে সম্পূর্ণ প্রক্রিয়া:

vim scp://nagios//tmp/notouch

/tmp/notouchরুটের মালিকানাধীন ফাইলটি কোথায় , আমি ভিমটি দ্রুত দেখায়

:!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, বা যা কিছু)। অন্য যে কোনও কিছুর সাথে সুরক্ষা জড়িত রয়েছে।
স্যাটাস কাতসুরা

@ স্যাটোক্যাটসুরা আমি আপনার লোকালহোস্টে রিমোট ফাইলের অনুলিপি ব্যতীত অন্য কোনও সত্যিকারের সুরক্ষা সম্পর্কিত প্রভাব দেখতে ব্যর্থ। সংস্করণটির কারণে এবং আমার .vimrcফাইলটির জন্য আমি আমার স্থানীয় সংস্করণটি ভিএম ব্যবহার করতে চাই
মিচ

পরিবর্তে কনফিগারেশন ম্যানেজমেন্ট ব্যবহার করে ফাইলগুলি উত্পাদনের বাইরে ধাক্কা দিতে (বা টানতে) হবে না? তারপরে আপনি কেবল আপনার স্থানীয় সম্পাদকটি ব্যবহার করতে পারেন।
ট্রিগার করুন

@ ড্র্রুবেন আমি একটি সম্পাদনার সাথে আমি যে সম্পূর্ণ প্রক্রিয়াটি ব্যবহার করছি তা দেখিয়ে প্রশ্নটি আপডেট করেছি
মিচ

হুমমম ... এই কাজ করে না? ssh -t host sudo vim file?
কুসালানন্দ

উত্তর:


9

আমি এটি বলতে যাচ্ছি কারণ vimএটি রিমোট কমান্ডগুলি কার্যকর করছে না। এটি কেবল scpফাইলটি অনুলিপি করতে, স্থানীয়ভাবে সম্পাদনা করতে এবং scpএটি হয়ে গেলে ফিরে আসে। এই প্রশ্নের sudo মাধ্যমে যেমনটি বলা scpসম্ভব নয় এবং এটি প্রস্তাবিত হয় যে আপনি যা চান তা সম্পাদনের জন্য অনুমতিগুলি পরিবর্তন করুন বা কেবল দূরবর্তী মেশিনে এসএসএস করুন।


আমি যে উত্তরটির জন্য আশা করেছিলাম তা নয়, তবে এটি সঠিক বলে মনে হচ্ছে। সম্ভবত আমি এটি পেতে একটি প্লাগইন লিখব ..
মিচ

আরে @ মিচ, আপনার সমস্যার সমাধান করার জন্য আপনি কি কোনও সমাধান / প্লাগইন খুঁজে পেয়েছেন? আমি ঠিক একই পরিস্থিতি অনুভব করছি! ধন্যবাদ!
ব্রুনো বেলোটি

4

গৃহীত উত্তরের মতো, আমি সরাসরি এটি সম্ভব বলে মনে করি না।

যাইহোক, আমি এখনও আপনার লক্ষ্য অর্জনের জন্য কমপক্ষে দুটি উপায় দেখতে পাচ্ছি।

দূর থেকে ভিএম চালাচ্ছি

ssh user@myserver sudo vim /some/file

এর অসুবিধাগুলি রয়েছে:

  • Vim এর সাথে আপনার মিথস্ক্রিয়াগুলি নেটওয়ার্কের বাইরে চলে যায়। তাৎপর্যপূর্ণ পিছিয়ে পড়া বিরক্তিকর হবে, এবং যদি আপনার সংযোগটি মারা যায়, তবে ভিম (অবশেষে) হয়।
  • এটি আপনার স্থানীয় ভিম কনফিগারেশন ব্যবহার করবে না, তবে দূরবর্তী রুটের ভিম কনফিগারেশন ব্যবহার করবে।

তবে এতে কাজ করার সুবিধা রয়েছে।

ভিমের বাইরে স্ক্র্যাপ করা

আপনি কেবল স্থানীয়ভাবে ফাইলটি অনুলিপি করতে, এটি সম্পাদনা করতে এবং এটি আবার অনুলিপি করতে পারবেন। এবং আপনি এটি স্বয়ংক্রিয় করতে পারেন এটি ভিএম এর স্ক্রিপ সমর্থন হিসাবে প্রায় বিরামবিহীন করতে।

নিম্নলিখিত শেল স্ক্রিপ্টের মতো কিছু কাজ করতে পারে (দ্রষ্টব্য, সম্পূর্ণরূপে অনির্ধারিত!):

#! /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 কী ~ root / .ssh / অনুমোদিত_keys এ থাকা উচিত। একবার আপনার এটি হয়ে গেলে, আপনি সম্ভবত এটি করতে পারেন

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

নীচের লাইন: এটি কার্যকরভাবে কেবল একটি শর্টকাট

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

এটি করার জন্য যদি আপনার প্রয়োজনীয় অ্যাক্সেস থাকে তবে আপনার ভিএম এর নেটওয়ার্ক অ্যাক্সেস প্লাগইন ব্যবহার করার প্রয়োজনীয় অ্যাক্সেস রয়েছে। যদি না হয়, তবে আপনি না।

জাচারি ব্র্যাডি যেমন উল্লেখ করেছেন, এতে sudoজড়িত নেই। আপনার রুট অ্যাকাউন্টে ssh অ্যাক্সেস প্রয়োজন।

আপনি কি এটা চেষ্টা করেছেন?


1
আমার কাছে মূল পাসওয়ার্ড নেই এবং আমি নিশ্চিত নই যে সার্ভারের মালিকানাধীন লোকদের অনুমতি ছাড়াই আমার চাবি সেখানে comfortableোকাতে আমি স্বাচ্ছন্দবোধ করি। সত্যিকারের শর্টকাট যা এটি আমার জন্য করছে তা হ'ল আমাকে এসএস-আইএন, সুডো সিপি-ইনগ, স্কিপ-ইনিং, সম্পাদনা, স্কিপ-ইন, এসএস-আইএন, সুডো সিপি-আইং (যেমন আমার ব্যবহারকারী ফাইলটি পড়তে পারে না) থেকে রক্ষা করছেন। sshfs এখানে যাওয়ার উপায় হতে পারে
মিচ

একটি ভাল সুযোগ আছে যে আপনার যদি রুটে ssh অ্যাক্সেস না থাকে তবে sshfs কাজ করবে না। দূরবর্তী ফাইল সিস্টেম সম্ভবত আপনার অনুমতি নিয়ে মাউন্ট করা হবে। আমি মনে করি এই মুহুর্তে আপনার একমাত্র বিকল্পটি হলssh remotesystem sudo vim file
এডওয়ার্ড ফালক

আপনি ঠিক বলেছেন - sshfs কাজ করে না (এবং আপনি আমাকে বুঝিয়ে দিয়েছিলেন যে আমি ঘটনাক্রমে নিজের কাছে একগুচ্ছ ফাইল ছুঁড়েছি যা হওয়া উচিত ছিল না ...) যদিও আমি ভেবেছিলাম এটি কাজ করছে
মিচ

1
@ মিচ - সার্ভারের মালিকানাধীন লোকেরা আপনাকে একটি ব্যবহারকারী অ্যাকাউন্ট দিয়েছে, এবং আমি বিশ্বাস করি, আপনি যে অ্যাকাউন্টটি ব্যবহার করেন তার জন্য আপনি দায়বদ্ধ। আপনি সেখানে একটি সর্বজনীন কী রেখেছেন যা সেই অ্যাকাউন্টে অ্যাক্সেস সহ যে কেউ পারে। আপনি পাসওয়ার্ডের জ্ঞান যতটা অনুমতি দেয় ঠিক তেমন ব্যক্তিগত কীটি দখলে সেই অ্যাকাউন্টের অনুমতিগুলি বেঁধে রাখছেন। অর্থাত্ সার্ভারের দৃষ্টিকোণটি তৈরি করুন কী বা পাসওয়ার্ড জানার মধ্যে কোনও পার্থক্য নেই।
গ্রোচামাল

নীচের লাইন: আমি মনে করি যে আপনি আপনার সার্বজনীন কী server সার্ভারে রাখতে দ্বিধা প্রকাশ করবেন। আমার মনে হয় আপনি ssh / sudo vim এর সাথে আটকে আছেন
এডওয়ার্ড ফালক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.