Я хочу открыть файл в Emacs, который расположен на удаленном сервере, с sudo включает сервер. Я могу открыть локальные файлы с sudo через Бродягу как это:
C-x C-f /sudo::/home/user/file
Но я хочу использовать sudo на сервере:
C-x C-f /sudo::user@server/home/user/file
Но это дает мне, sudo включает мою локальную машину, он просит мой sudo пароль на локальной машине. Существует ли способ использовать sudo на сервере?
BTW: Emacs не установлен на сервере
Обновление : Хотя этот ответ решил исходную проблему, она была написана для Emacs 20 или 21. Для Emacs 24 я рекомендую вам использовать Ответ , потому что это предлагает больше объяснения и в курсе.
Я думаю, что Multi-Hop Fireenames в Tramp - это то, что вы ищете.
Первый хоп будет SSH, а второй будет Sudo.
Обновление: Последние версии EMACS поддерживают несколько хмель, используя прокси:
(add-to-list 'tramp-default-proxies-alist ("my-sudo-alias" nil "/ssh:user@ssh-host"))
затем вызывают, открывающиеся:
/sudo:my-sudo-alias:file-on-ssh-host
Вы должны сначала SSH на сервере, то вам необходимо запустить Emacs локально.
Или вы можете использовать NFS с NO_ROOT_SQUASH, или вы можете попробовать с помощью Emacs Server / Client, хотя я понятия не имею о том, что может произойти (не используйте сам Emacs)
[У меня возникли проблемы с выбранным ответом. Однако это сработало, когда я добавил эту строку в .emacs:
(add-to-list 'tramp-default-proxies-alist '(".*" "\\`root\\'" "/ssh:%h:"))
, а затем выполнил следующее:
/ sudo: ssh-host: file-on-ssh-host
Это немного сбивало с толку, потому что в какой-то момент Мне было предложено ввести пароль «root», но ввод пароля пользователя предоставил мне доступ. Он также универсально работает на всех хостах в сети. Кроме того, я все еще могу сделать это, чтобы не быть root:
/ ssh: ssh-host: file-on-ssh-host