1

ファイルからパスワードを読み取り、ユーザーがパスワードを入力せずにログインできるようにする pam モジュールを作成しようとしています。

[編集: ファイルは外部デバイスに保存されます。(二要素認証を満たそうとしています)。これは非常に安全ではないように聞こえるかもしれませんが、ファイルは適切な暗号化アルゴリズムで暗号化されます。鍵交換と暗号化/復号化は問題ではありません]

外部デバイスが接続されている場合、ユーザーはログイン画面 (KDM) で自分のユーザー名を入力するだけで、PAM モジュールはデバイスから必要なパスワードを取得し、ユーザーをログインさせます。

私は PAM トピックの初心者です。いくつかの調査を行いましたが、それが可能かどうか (その方法である場合) を見つけることができませんでした。

この問題を解決する方法をご指摘いただければ幸いです。

4

4 に答える 4

0

つまり、基本的には、パスワードはまったく必要ありません。

あなたは本当のパスワードがファイルで暗号化されていると言います。どのキーで?他に誰がパスワードファイルにアクセスできますか(暗号化されているかどうかは関係ありません)?他に誰がログイン画面に物理的にアクセスできますか?

ログイン画面に物理的にアクセスできるすべての人は、ログインするためにユーザー名のみを知っている必要があります。

これは、既存のpam_permitモジュールでより簡単に実現できます。それを構成に挿入して、それで完了します。詳細については、を参照man pam_permitman pam.dてください。

于 2011-12-21T22:04:02.890 に答える
0

あなたの質問を 1 対 1 で翻訳すると、PAM アイテムを使用して、モジュールから他のモジュールにパスワードを渡すことになります (たとえば、try_first_pass / use_first_pass のように、Linux-PAM ソースを参照してください)。これは比較的簡単なはずです。そのためのコード例がたくさんあります。

代わりにできることは、正しい USB キーを認識することです。それを行う pam_usb というモジュールがありました。 http://sourceforge.net/projects/pamusb/およびhttps://github.com/aluzzardi/pam_usbを参照してください。

于 2011-12-30T17:04:26.177 に答える
0

答えはここにあります:

  1. カスタム pam モジュールを作成します。(インターネット上でたくさんの例を見つけることができます)
  2. 必要に応じてデータを読み取ります。(ファイルから読み取るか、好きな機能を使用してその他のものを読み取ります)
  3. 以下とここに示すように、ハッシュ化されたパスワードを比較します。
if ((!pwd->pw_passwd[0] && (flags & PAM_DISALLOW_NULL_AUTHTOK)) ||
      (crypt_password = crypt(password, pwd->pw_passwd)) == NULL ||
      strcmp(crypt_password, pwd->pw_passwd) != 0)
      pam_err = PAM_AUTH_ERR;

一致する場合、成功を返します。

それだ。

于 2012-08-28T10:10:41.363 に答える