Я нашел этот вопрос, который объясняет, как редактировать удаленный файл с помощью vim:
vim scp://user@myserver[:port]//path/to/file.txt
Можно ли сделать это как root (через sudo
) на удаленном хосте?
Я попытался создать файл с правами суперпользователя на удаленном хосте и отредактировать его с помощью вышеуказанного. Vim может просматривать содержимое, редактировать его и сохранять, но ничего не меняется на удаленном хосте (возможно, потому, что vim просто сохраняет свой временный файл, а затем передает его scp для возврата?)
При выполнении этого с файлом, сохраненным моим пользователем, он ведет себя как ожидалось.
Мой SSH использует ключ для аутентификации, а на удаленном сервере есть NOPASSWD для моего доступа sudo
Этот вопрос похож, но единственный ответ с голосами использует марионетку, которая определенно не то, что я хочу использовать.
Изменить: В ответ на комментарий @ drewbenn ниже, вот мой полный процесс для редактирования:
vim scp://nagios//tmp/notouch
Где /tmp/notouch
находится файл, принадлежащий root, я вижу, Vim быстро показать
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Это автоматически уходит, чтобы получить пустой черный экран с текстом
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Нажатие Enter позволяет мне редактировать файл
При сохранении появляется та же команда scp, что и в начале, которая быстро и автоматически исчезает (ее трудно прочитать вовремя, но файлы scp и / tmp / ... определенно есть)
.vimrc
файла
ssh -t host sudo vim file
?
ssh
на сервер и отредактируйте файл там (сvisudo
или как угодно). Все остальное имеет последствия для безопасности.