eshell이 ​​2 분 동안 sudo 비밀번호를 기억하게하는 방법은 무엇입니까?


15

일반적으로 runing이라는 용어 bashsudo ...명령을 실행할 때 bash는 내 비밀번호를 잠시 동안 기억합니다. 따라서 패키지 관리 작업이 쉬워집니다.

예를 들면 다음과 같습니다.

sudo apt-get update
# password ......
sudo apt-get install turing-brain
# execute without requiring password again.

eshall에서 달성 할 수 있습니까?

( term또는 ansi-termEmacs 에서이 작업을 수행 할 수 있다는 것을 알고 있지만 eshell은 Emacs와 더 잘 통합됩니다.)

답변:


14

먼저 eshell 세션에서 어떤 sudo 가 실행 되는지 확인하십시오 . 시스템의 sudo가 될 수 있습니다.

$ which sudo
/path/to/system/wide/sudo
$ which *sudo
/path/to/system/wide/sudo

또는 eshell의 sudo :

$ which sudo
sudo is a compiled Lisp function in `em-tramp.el'
$ which eshell/sudo
eshell/sudo is a compiled Lisp function in `em-tramp.el'

Eshell의 sudo 는 TRAMP의 su 또는 sudo 메소드를 사용합니다. 이 명령은 eshell-tramp 모듈에 있으며 기본적으로 비활성화되어 있습니다.

eshell의 sudo 사례를 다루겠습니다. Emacs 내부에 있으며 OS 배포판에 의존하지 않기 때문입니다.

  1. eshell- 트램프 모듈 장착 :

    (require 'em-tramp) ; to load eshell’s sudo
    
  2. eshell의 sudo로 전환

    • 내장 명령을 선호함으로써

      (setq eshell-prefer-lisp-functions t)
      

      Emacs 24.4에서 설정해야 할 것 같습니다

      (setq eshell-prefer-lisp-variables t)
      
    • 별명 을 작성하여 (eshell에서 스 니펫 실행)

      alias sudo 'eshell/sudo $*'
      

      alias 명령으로 정의되거나 삭제 된 별명은 eshell-aliases-file 이라는 이름의 파일에 자동으로 작성되며 직접 편집 할 수도 있습니다 (수동으로 다시로드해야 함).

  3. 마지막으로 eshell의 sudo (및 TRAMP)에 비밀번호 캐싱을 활성화하십시오.

    (setq password-cache t) ; enable password caching
    (setq password-cache-expiry 3600) ; for one hour (time in secs)
    

PS eshell-prompt-function으로 프롬프트를 변경 한 경우 그에 따라 프롬프트 정규 표현식 eshell-prompt-regexp 를 조정해야합니다 . 잘못된 프롬프트 정규 표현식은 암호 감지를 포함한 일부 eshell 기능을 손상시킬 수 있습니다.


이 지침을 따른 which sudo후에도 여전히 /usr/bin/sudo시스템에 표시됩니다 .
Boccaperta-IT 2016

새로운 eshell 버퍼로 테스트 했습니까 ? IIRC 현재 eshell 세션은 변경 사항을 선택하지 않습니다.
kmicu

예. emacs 데몬을 재시작하고 새 클라이언트를 열었습니다.
Boccaperta-IT 2016

얕은 테스트를 거친 후 emacs 24.4에서 (setq eshell-prefer-lisp- 변수 t)가 필요 하다는 것을 알았습니다 . @ Boccaperta-IT 그것이 당신을 위해 작동하는지 확인할 수 있습니까?
kmicu

여전히 작동하지 않습니다 /usr/bin/sudo(하지만 Emacs 25.0.50.1을 사용하고 있습니다)
Boccaperta-IT

4

별명을 만들지 않고 Emacs 26 (아마도 Emacs 25와 동일)에서 sudo를 작동 시키려면에 추가 eshell-tramp해야했습니다 eshell-modules-list.

(add-to-list 'eshell-modules-list 'eshell-tramp)

또한(require 'esh-module)
Nymo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.