アカウントに別のパスワードを設定したいと思います。たとえば、特定のUSBスティックを挿入すると、単純なパスワードが使用されます。アイデアは:コンピュータから離れてスティックを持って行くと、簡単なパスワードが無効になるということです。
私の一般的な考えは次のとおりです。
- udevを使用してスティックを検出し、その中にあるいくつかのデータを検出し(udevで実行されるスクリプトを使用)、それに応じて応答することができます(スティックを分離したときに削除されるファイルの生成)。これは簡単です。
- 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/shadow
NISを使用してパスワードを変更します。
ただし、次のものを使用できます。pam_pwdfile
基準寸法。私はそれを使用したことがありませんが、説明があなたが望むものと正確に一致するようです。
PAMモジュールを使用すると、同様の構造を持つ任意の名前付きテキストファイルを使用して
/etc/passwd
ユーザーを認証できます。
または、次のものを使用できます。pam_userdb
、パラメータとして渡されたファイル名を使用して、Berkeley DB形式のデータベースでパスワードを確認します。
USB スティックの存在を検出するには、別の PAM モジュールが必要です。pam_listfile
その仕事にぴったりなようです。 USBキーをインストールし、特定の場所にのみインストールするようにudevルールを並べ替えます。たとえば、短いパスワードを使用できるユーザー名のリストを含むファイルを/media/authentication-key
作成します。users.txt
PAMスタックでより複雑なテストを実行するには、次のものを使用できます。`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