Làm cách nào để ngăn Emacs hiển thị cụm mật khẩu trong `Mx shell`?


9

Tôi đã thử sử dụng gác mái với cụm mật khẩu để sao lưu các tệp của mình từ bên trong M-x shell. Shell đã hiển thị cụm mật khẩu dưới dạng văn bản đơn giản trong bộ đệm và làm cho nó có sẵn bằng cách nhập M-rcũng như bằng cách xem qua lịch sử nhập vỏ với C-c C-l.

Khi tôi đóng vỏ và mở lại lịch sử đầu vào, tôi thấy rằng ít nhất nó đã biến mất. Có lẽ, bởi vì cái vỏ đọc lịch sử ban đầu của nó .bash_historyvà ít nhất bashcó ý thức tốt là không viết của tôi passphraseở đó.

Tôi có thực sự cần phải rời đi emacsđể thực hiện atticsao lưu của mình không , hoặc có cách nào để tôi có thể định cấu hình nó để không bất cẩn không?

Tôi đã có thể tái tạo vấn đề với một emacs -Qphiên mới . Trước đây tôi đã bối rối vì Emacs ẩn chính xác cụm mật khẩu trong mọi trường hợp trừ khi tôi gọi

 attic create --stats /path/to/backup::name ~/folders ~/backed ~/up

Sau đó atticnhắc nhở như:

Enter passphrase for /path/to/backup::name:

Vấn đề có thể được sao chép với lớp lót Python này:

python -c 'import getpass; getpass.getpass("Hello")'

Nếu chuỗi dấu nhắc mật khẩu là "Password:"Emacs sẽ thấy dấu nhắc mật khẩu, nhưng không phải nếu chuỗi đó là bất cứ điều gì khác.

Làm cách nào tôi có thể làm cho Emacs nhận ra ít nhất lời nhắc mật khẩu của gác mái?

Câu trả lời:


13

Trong chế độ Shell, Emacs phát hiện lời nhắc mật khẩu dựa trên lời nhắc. Nếu nó nhìn thấy Password:(hoặc Enter new password:, hoặc Passwort:, hoặc Wachtwoord:một số biến thể), nó giả định rằng bạn được nhắc nhập mật khẩu và đọc một chuỗi từ bộ thu thập dữ liệu (lặp lại lời nhắc); chuỗi này không được lặp lại và không được nhập vào bất kỳ danh sách lịch sử nào.

Nếu Emacs không nhận ra lời nhắc, bạn có thể đạt được hiệu ứng tương tự bằng cách gọi M-x send-invisible(không bị ràng buộc với bất kỳ phím nào theo mặc định).

Bạn có thể dạy Emacs nhận ra lời nhắc mật khẩu mà bạn thấy bằng cách tùy chỉnh comint-password-prompt-regexp. Lưu ý rằng regrec này được tìm kiếm trên dòng hiện tại, vì vậy nó nên bắt đầu bằng ^nếu bạn muốn khớp văn bản ở lề trái và nó sẽ kết thúc bằng \'nếu bạn không muốn cho phép văn bản tùy ý sau đó.

Để thêm một định dạng nhắc nhở khác, hãy thêm \|^…\'vào cuối regex hiện có. Ví dụ: bạn có thể thêm phần này vào tệp init của mình (nhớ tăng gấp đôi dấu gạch chéo giữa các dấu ngoặc kép):

(setq comint-password-prompt-regexp
      (concat comint-password-prompt-regexp
              "\\|^Enter passphrase for .*:\\s *\\'"))

1
Và nếu bạn thêm một số yếu tố vào comint-password-prompt-regexp, hãy xem xét việc gửi nó qua M-x report-emacs-bugđể có thể thêm nó vào mặc định.
Stefan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.