接続機器によって異なるパスワード

接続機器によって異なるパスワード

アカウントに別のパスワードを設定したいと思います。たとえば、特定のUSBスティックを挿入すると、単純なパスワードが使用されます。アイデアは:コンピュータから離れてスティックを持って行くと、簡単なパスワードが無効になるということです。

私の一般的な考えは次のとおりです。

  1. udevを使用してスティックを検出し、その中にあるいくつかのデータを検出し(udevで実行されるスクリプトを使用)、それに応じて応答することができます(スティックを分離したときに削除されるファイルの生成)。これは簡単です。
  2. PAMにファイルが存在することを確認し、それに応じてパスワードデータベースを選択してください。

主な質問は次のとおりです(つまり、質問の構造を正しく理解した場合)。pam_unix2別のシャドウファイルを使用するように設定できますか?私はこのマニュアルページを見ましたが、pam_unix2このモジュールを使用すると、glibc NSSがこの決定を下すことができるので、これは不可能なようです。

ベストアンサー1

pam_unixとpam_unix2はどちらもlibcを使用してパスワードハッシュを探し、Glibcには位置指定/etc/nsswitch.conf/etc/shadowハードコーディング機能があります。再コンパイルするのと同じくらいpam_unix簡単ではありませんpam_unix2。どちらも一般的なNSSメカニズムでパスワードを検証し、知識/etc/passwd/etc/shadowNISを使用してパスワードを変更します。

ただし、次のものを使用できます。pam_pwdfile基準寸法。私はそれを使用したことがありませんが、説明があなたが望むものと正確に一致するようです。

PAMモジュールを使用すると、同様の構造を持つ任意の名前付きテキストファイルを使用して/etc/passwdユーザーを認証できます。

または、次のものを使用できます。pam_userdb、パラメータとして渡されたファイル名を使用して、Berkeley DB形式のデータベースでパスワードを確認します。

USB スティックの存在を検出するには、別の PAM モジュールが必要です。pam_listfileその仕事にぴったりなようです。 USBキーをインストールし、特定の場所にのみインストールするようにudevルールを並べ替えます。たとえば、短いパスワードを使用できるユーザー名のリストを含むファイルを/media/authentication-key作成します。users.txtPAMスタックでより複雑なテストを実行するには、次のものを使用できます。`pam_exec

/etc/shadowこれは強力で/etc/passwd.weak弱いパスワードを含むと推定されるスタックです。警告:テストされておらず、PAMに慣れていないので、慎重に確認してください。

auth [success=ignore default=1] pam_listfile.so file=/media/authentication-key/users.txt iter=user sense=allow onerr=fail
auth [success=1 default=bad] pam_unix.so
auth [success=ok default=bad] pam_pwdfile.so pwdfile=/etc/passwd.weak
auth requisite pam_deny.so

おすすめ記事