Emacs 上でのパスワード入力 [Linux]
久しぶりに send-invisible のドキュメントを参照したところ、上記のバグが解決されたように解釈できる記述があったため、試したところ解決されていた。
以下は、解決された時期について調べたことをまとめたものである。
(注1)
shell バッファで su や telnet を実行した時、等
(注2)
必要な時に手動で実行する方法と、自動実行する方法がある。
・手動実行: パスワード入力のプロンプトが表示された時に、send-invisible を実行する。
・自動実行: 下記の設定を ~/.emacs に追加する。
(注3)(add-hook 'comint-output-filter-functions 'comint-watch-for-password-prompt)
直近の 100 個分の押下に関する情報が保存され、view-lossage の実行により参照できる。
パスワードの入力についても保存の対象となるため、パスワードを参照される危険がある。
1. Emacs-22.1 以降の対応状況
(1) 状況
send-invisible のセキュリティ上の問題点は改善されている。
・send-invisible (in comint.el) は、read-passwd (in subr.el) を実行する。
・read-passwd は、パスワード取得後に clear-this-command-keys を実行する。
・clear-this-command-keys は、保存されている入力情報を削除する。
(2) 補足
(a) 入力情報が削除されることは、Emacs-22.1/22.2/23.1 で確認。
(b) 対応済が否かについては、send-invisible のドキュメントから判断できる。
・C-h f <RET> send-invisible <RET> により、参照できる。
・clear-this-command-keys により fix できる旨の記述がある。
2. Emacs-21.4 以上 Emacs-22.1 未満の対応状況
(1) 状況
・clear-this-command-keys が提供されており、保存情報を削除できる。
・read-passwd が提供されている。
(clear-this-command-keys を実行する。)
・send-invisible は read-passwd を使用していない。
よって、read-passwd または clear-this-command-keys の実行により、対応可能である。
(2) 補足
・Emacs-22.1 では read-passwd を実行するが、
Emacs-21.4 では comint-read-noecho を実行している。
・Emacs-22.1 の comint-read-noecho は read-passwd を実行するだけである。
(互換性を保つため。)
・下記の設定を追加することにより、Emacs-22.1 と同等となる。
(CentOS 5.5 上の Emacs-21.4.1 で動作を確認。)
(add-hook 'comint-mode-hook '(lambda () (defalias 'comint-read-noecho '(lambda (prompt &optional ignore) "(read-passwd prompt)" (read-passwd prompt)))))
3. Emacs-21.4 未満の対応状況
(1) Emacs-20.4 以上 Emacs-21.4 未満の対応状況
Emacs-21.4 と同様と思われる。
・clear-this-command-keys は、Emacs-20.4 以降で提供されている。
(2) Emacs-20.4 未満の対応状況
・clear-this-command-keys は提供されておらず、未対応である。
・下記の設定等により view-lossage を無効化できるが、保存情報の削除はできない。
(fset 'view-lossage 'ignore)
4. 備考
(1) Emacs のリリース状況 (GNU のアーカイブの一覧から判断)
・Emacs-20.x (ただし、Emacs-20.4 以降)
20.4, 20.5a, 20.6, 20.7
・Emacs-21.x
21.1, 21.2, 21.3, 21.4a
・Emacs-22.x
22.1, 22.2, 22.3
・Emacs-23.x
23.1, 23.2
コメント 0