[emacs] Emacs 내에서 su / sudo가있는 파일 열기

내가 사용하여 기존 이맥스 세션에서 파일을 열고 자하는 가정 su또는 sudo쉘 아래로 떨어 뜨리고하지 않고, sudoedit또는 sudo emacs. 이를 수행하는 한 가지 방법은

C-x C-f /sudo::/path/to/file

그러나 이것은 SSH를 통한 비싼 왕복 여행 이 필요합니다 . 더 직접적인 방법이 있습니까?

[편집] @JBB가 맞습니다. 저장하고 열 수 있도록 su/ sudo를 호출 할 수 있기를 원합니다 . 저장할 때 다시 인증하는 것이 좋습니다 (이상적이지는 않지만). 내가 무엇을 찾고 있어요 것은 변형입니다 find-filesave-buffer이 될 수를 통해 “파이프” su/ sudo.



답변

Tramp의 좋은 점은 첫 번째 파일을 열 때 SSH에 대한 왕복 요금 만 지불한다는 것입니다. 그런 다음 Sudo는 자격 증명을 캐시하고 Emacs는 핸들을 저장하므로 후속 sudo가 열린 파일의 시간이 훨씬 단축됩니다.

나는 짐을 덜기 위해 시간이 더 걸리지 않았다. 충분히 빠릅니다, IMO.


답변

Tramp는 SSH를 통해 sudo를 왕복 하지 않으며 서브 쉘을 사용합니다 . 매뉴얼을 참조하십시오 : https://www.gnu.org/software/tramp/#Inline-methods

따라서 TRAMP를 사용하는 것이 좋습니다.


답변

당신이 사용하는 경우 helm, helm-find-files지원이와 루트로 파일을 여는 C-c r.


답변

실제로 원래 질문에 대한 대답은 아니지만 다음은 트램 / 스도 경로를 조금 더 쉽게하는 도우미 기능입니다.

(defun sudo-find-file (파일 이름)
  "파일 찾기와 유사하지만 파일을 루트로 엽니 다."
  (대화식 "FSudo Find File :")
  (((tramp-file-name (concat "/ sudo ::"(확장 파일 이름 파일 이름)))))
    (파일 트램프 파일 이름 찾기)))


답변

최소한 저장을 위해 sudo-save 패키지 는 그러한 종류의 문제에 대해 정확하게 작성되었습니다.


답변

귀하의 예는 적어도 내 버전의 TRAMP ( “2.1.13-pre”)가 아닌 ssh를 전혀 시작하지 않습니다. 파일 찾기와 저장 버퍼 모두 훌륭하게 작동합니다.


답변

조언 명령을 사용하는 것이 좋습니다. 이 기능을 ~ / .emacs에 넣으십시오.

(defadvice ido-find-file (after find-file-sudo activate)
  "Find file as root if necessary."
  (unless (and buffer-file-name
               (file-writable-p buffer-file-name))
    (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name))))