Programming

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

procodes 2020. 5. 25. 21:22
반응형

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))))

(로컬에서만 작동합니다. 트램프를 통해 올바르게 작동하려면 업데이트해야합니다)

버튼의 대답이 약간 확장되었습니다.

(defun sudo-find-file (file-name)
"Like find file, but opens the file as root."
(interactive "FSudo Find File: ")
(let ((tramp-file-name (concat "/sudo::" (expand-file-name file-name))))
(find-file tramp-file-name)))


(add-hook 'dired-mode-hook
    (lambda ()
      ;; open current file as sudo 
      (local-set-key (kbd "C-x <M-S-return>") (lambda()
        (interactive)
        (message "!!! SUDO opening %s" (dired-file-name-at-point))
        (sudo-find-file (dired-file-name-at-point))
      ))
    )
)

어. 아마도 Emacs와 exec sudo emacs에서 쉘을 열 수있을 것입니다.

문제는 아마도 파일을 열고 싶지 않다는 것입니다. 나중에 저장할 수 있기를 원합니다. 따라서 파일을 열기 위해 존재하는 것이 아니라 루트 권한을 유지해야합니다.

Emacs가 창 관리자가 되길 원하는 것 같습니다. 그것 없이는 부풀어 오른다. :)

참고 URL : https://stackoverflow.com/questions/95631/open-a-file-with-su-sudo-inside-emacs

반응형