数週間前に、私はキーボードをクリーンアップすることを決め、キーボードをボードに戻している間、いくつかのキーを台無しにしました。その結果、特定の文字を入力するのが非常に困難になりました。おそらくそれらのいくつかをパスワードに使用したようです。
もちろん、キーボードを交換する予定ですが、これまでttyで1日4〜5回のログインを試みる必要があることが気になり始めました(私はデスクトップマネージャを使用していません)。
pwfeedback
configでこれを設定して、この問題をある程度緩和しましたsudo
。これにより、キーボードが文字をスキップしたときに「見る」ことができます。しかし、同様のagetty
組み合わせオプションが見つかりませんlogin
。
ttyログインプロンプトのパスワードフィードバックを有効にする方法はありますか?
答え1
さて、ソースコードを見てみましょう!
util-linux
私のログインプロンプトが表示されたら、login
プログラムはそれを処理しています。始めましょうそこ、より具体的にはlogin-utils/login.c
文書。
これでプロンプトlogin
に対して責任があるようです。login
loginpam_get_prompt
PAMに登録してください。init_loginpam
。これloginpam_auth
その後、その機能が引き継がれ、制御権がPAMに付与されます。pam_authenticate
機能。これはlogin
、ユーザー名プロンプトのみを定義し、それ以上は定義しないことを意味します。
PAMの場合:私たちが興味を持っていることは明らかに次のように起こりました。pam_authenticate
:
pam_authenticate 関数はユーザーの認証に使用されます。認証サービスによっては、ユーザーは認証トークン(通常はパスワードだけでなく指紋)も提供する必要があります。
シャドウベースの認証(/etc/passwd
、/etc/shadow
)はこのモジュールで処理されますpam_unix
。マイディストリビューション(Arch)は、次のようにPAMを提供します。pam
パッケージは、私たちの旅行が続くことを意味します。linux-pam.orgそしてソースコード。modules/pam_unix/pam_unix_auth.c
良い出発点のようです。 PAMモジュールは、私たちが見つけた機能を通してpam_sm_authenticate
認証メカニズムを提供します。ここ。パスワード(または「認証トークン」、上記を参照)は次のように取得されます。電話PAMへpam_get_authtok
機能。それにsecurity/pam_ext.h
ヘッダファイルはまさに私たちが次に行くところです。
extern int PAM_NONNULL((1,3))
pam_get_authtok (pam_handle_t *pamh,
int item,
const char **authtok,
const char *prompt);
これらの主張のどれもあまり有望ではありませんが…まあ…定義。パラメータとforがpam_unix
渡されたため、次のように終了します。NULL
prompt
PAM_AUTHTOK
item
ここ。今ハードコーディングはPAM_PROMPT_ECHO_OFF
私にとっては良くありませんpam_prompt
...
retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[0], "%s", PROMPT);
しかし、パスワードPROMPT
もハードコードされています(ここ)、だからもう少しエキゾチックなパスワードプロンプトへの私の夢は破線になりました...とにかく、一度見てみましょうpam_prompt
機能。表示される実際のプロンプトは次のとおりです。ここ、PAMが会話関数を呼び出し、いくつかの行を取得する場合以上。早く見てくださいとpam_get_item
pam_set_item
機能は私たちに以下を紹介します。pam_conv
構造の定義ここ。
これで、基本的なPAMセッション機能に関する情報を見つけることは予想よりはるかに困難です。私が見るすべての構造はまだ初期化されておらず、pam_unix
独自の構造が定義されていないようです。しかし、私は普遍性を見つけました。misc_conv
PAM_PROMPT_ECHO_OFF
渡される関数read_string
そして…ここPAM が入力フィードバックを無効にする場所です。
結論として:パスワードフィードバックはハードコーディングされません。本当にひどいです。少しの破棄が私を得た。このGitHubの問題そしてこのアーチBBSテーマ。確かに、この機能を使用できますPAMが認証標準ではなかった時代。セキュリティなどすべてをこれ以上実装しないのが合理的だと思います。しかし、オプションがあれば良いでしょう。
とにかく、ちょうど新しいキーボードを注文しました。