Может ли vim редактировать удаленный файл от имени пользователя root?

Вам не нужно этого делать.

С этим изменением оверлеи находятся в u-boot! https://github.com/u-boot/u-boot/commit/e6628ad7b99b285b25147366c68a7b956e362878

Наслаждайтесь :)

10
28.06.2016, 17:52
3 ответа

Как и в принятом ответе, я не думаю, что это возможно напрямую.

Однако я вижу по крайней мере два способа достичь поставленной цели.

Удаленный запуск vim

ssh user@myserver sudo vim /some/file

У этого есть недостатки:

  • Ваше взаимодействие с vim осуществляется по сети. Значительная задержка будет раздражать, и если ваше соединение прервется, vim (в конечном итоге) тоже.
  • Это не будет использовать вашу локальную конфигурацию vim, но будет использовать удаленную корневую конфигурацию vim.

Но у него есть то преимущество, что оно работает.

Выполнение scp вне vim

Вы можете просто скопировать файл локально, отредактировать его и скопировать обратно. И вы можете автоматизировать это, чтобы сделать его почти таким же простым, как поддержка scp в 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 . Он даже сохраняет локальную копию, если вторая передача не удалась, поэтому вы не потеряете свои изменения.

В сценарии можно было бы использовать множество улучшений (по крайней мере, проверку ошибок), но это отправная точка.

4
27.01.2020, 20:01

Я скажу, что это невозможно, потому что vim не выполняет удаленные команды. Он просто использует scp , чтобы скопировать файл, отредактировать его локально и scp , когда закончите. Как указано в , этот вопрос sudo через scp невозможен, и рекомендуется либо изменить разрешения для выполнения того, что вы хотите, либо просто передать ssh на удаленный компьютер. .

9
27.01.2020, 20:01

Вам понадобится пароль root или ваш открытый ключ ssh находится в ~ root / .ssh / authorized_keys. Как только вы это сделаете, вы, вероятно, сможете сделать

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

Итог: это фактически просто ярлык для

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

. Если у вас есть необходимый для этого доступ, то у вас есть необходимый доступ для использования плагина доступа к сети vim. Если нет, то нет.

Как указывает Захари Брэди, sudo не задействован. Вам понадобится ssh-доступ к учетной записи root.

Вы пробовали это?

3
27.01.2020, 20:01

Теги

Похожие вопросы