/etc/passwd
パスワード データベース ファイル ( ) を他のファイルに変更することは可能ですか。この認証メカニズムは内部的にどのように機能しますか? pam に依存していますか?
答え1
おっしゃる通りです。 および/etc/passwd
は、PAM の一部である/etc/shadow
によって参照されますpam_unix.so
。少なくとも最近の Linux ではそうです。 にパッチを当てることでこれを変更できますpam_unix.so
。man ページを信じるなら、システム データベースの場所を変更することはできません。
そして、それは本当に望ましくありません。/etc/passwd
認証に使用されるだけでなく、(逆)名前解決や、ユーザーのフルネーム、シェルなどの検索にも使用されます。名前と場所は非常に標準化されているため、移動すると、PAM 以外のものが確実に壊れます。予想していたよりも多くのパッチを適用する必要があります。
アップデート:セキュリティのためにファイルを隠そうとしているので/etc/{passwd,shadow,group}
あれば、心配する必要はありません。隠すことによるセキュリティは、ポリシーとしてはほとんど役に立ちません。ファイルはそのままにして、残りのポリシーを強化してください。
更新: 考えられる解決策
異なるユーザー/グループデータベースにアクセスする必要があるカスタムソフトウェアがある場合は、関連するPAMおよびNSSモジュールのコピーを作成し、パッチを適用することができます。彼らカスタム データベースを使用します。元の UNIX データベースはソフトウェアが混乱しないようにそのまま残りますが、PAM と NSS を設定して、必要な場所でカスタム モジュールを使用するようにし、適切なポリシーを適用することができます。
radius
UNIXデータベースを本質的にきれいな状態に保つことで、あなたが求めていたものが手に入ります。これは、ldap
PAM/NSSモジュールが行うこととほぼ同じです。追加(置き換えではありません) 資格情報とユーザー/グループ情報のソース。
さらにもう一歩進んで、PAM と NSS に戻って、UNIX データベースの検索を完全に無効にすることができます。古いソフトウェアのファイルはそのまま残しておきます (当然、ユーザー/グループ データベースのビューは不正確になりますが、少なくとも壊れることはありません)。
答え2
探しているのはpam_pwdfile
モジュールです。Debian/Ubuntu ではパッケージが存在しますlibpam-pwdfile
(RedHat 由来のディストリビューションについては不明)。
パッケージに同梱されている説明README
書に使用方法が説明されています。
答え3
すぐに実行できるかどうかはわかりませんが、ハッキングすれば間違いなく可能です。これを行うには、次のことが必要です。
- nsswitch ライブラリ (/lib/libnss_files.so または libnss_db.so - /etc/nsswitch.conf を確認してください) を調整/修正して、他のファイルを読み取るようにします。
- pam_unix モジュールを調整/ハックして、他のファイルも読み取れるようにします。
答え4
NIS または LDAP を使用してユーザーを認証します。ユーザーのパスワードは /etc/{password/shadow} ファイルに保存されません。