題 在Vim中進行遠程sudo編輯


如何用sudo編輯遠程文件?

我有ssh / scp訪問遠程服務器,並且無密碼sudo。

我想編輯 /etc/some/file 作為遠程root,所以我運行:

  $ Vi scp://server/etc/some/file

但是,它沒有用,因為我沒有足夠的權限。我怎樣才能做到這一點?


5
2017-11-26 07:47


起源


您可以使用登錄遠程系統 ssh remoteserver,並在遠程服務器上執行 sudo vim /etc/myfile。或者一個命令: ssh -t remoteserver sudo vi /etc/myfile - taro
@taro如果他在該機器上沒有登錄shell怎麼辦? - Swiss
如果他沒有登錄,他可以 scp remote:/etc/myfile ~/myfile,編輯 vim ~/myfile,但用更改的文件覆蓋遠程文件將是一個問題。 - taro
主要目的是在遠程使用本地vim(使用我的設置,我的鍵盤映射等)。是的,我可以在每個主機上安裝我的設置 - 但這種醜陋的方式。
我有完全相同的問題,並有完全相同的動機,使用一個單一的中央VIM程序 - puk


答案:


根據 這個維基頁面 你應該指定你的用戶名和主機:

vim scp://user@server//etc/some/file

感謝提示,我不知道vim能夠通過scp編輯文件。


0
2017-11-26 08:10



抱歉,除非您以root用戶身份登錄,否則它似乎無法解決權限問題。 - KL-7
權限問題不是問題。如果你想做根級別的東西,你只需要以root身份登錄,這在我的書中是件好事。您的解決方案效果很好 - romainl
我已經說過了 - 這不允許訪問sudo-accessible文件。
Vim中的遠程編輯不在遠程服務器上完成。該文件在本地下載並在保存後重新上載 - romainl
我是知道的。只是想找到netrw插件/ mod,它不僅允許scp,還允許ssh + sudo。 - datacompboy


擴展我的評論......

無論你使用什麼賬戶,Vim都不會在遠程機器上做那種奇特的事情。它僅限於下載和上傳:讀取遠程文件意味著將文件下載到本地計算機上的臨時位置,寫入遠程文件意味著將本地副本上載到遠程計算機。

這意味著你將無法做到 sudo 在遠程機器上編輯之前。

如果用於寫入/上載文件的帳戶不是root,則無法覆蓋root擁有的文件。這是基本的UNIX /服務器安全性。

代替, ssh 進入服務器並在那裡使用Vim或使用正確的帳戶使用KL-7的代碼段。

看到 :help netrw-xfer,和 :help netrw-quickmap 用於其他功能,例如目錄列表。沒有 sudo 在望。


0
2017-11-26 16:56



你可以在emacs中做到這一點,他的蹦床能夠通過ssh + sudo工作。我只是搜索插件,為vim實現相同的功能。 - datacompboy