/etc/passwd
パスワードデータベースファイル()を別のファイルに変更できますか?この認証メカニズムは内部的にどのように機能しますか?パムに依存していますか?
答え1
あなたは正しいです。協議によると/etc/passwd
PAMの一部です。少なくとも最新のLinuxではそうです。をパッチしてこの設定を変更できます。マンページを信頼できる場合は、システムデータベースの場所を変更できません。/etc/shadow
pam_unix.so
pam_unix.so
そして、あなたは本当にそうしたくありません。/etc/passwd
認証だけでなく、(逆)名前解決やユーザーのフルネーム、シェルなどを見つけるためにも使用されます。名前と場所はあまりにも標準化されているので、移動するとPAM外の問題がほぼ確実に中断されます。予想以上に多くのものに触れる必要があります。
修正する:セキュリティ上の理由からファイルを非表示にしたい場合でも/etc/{passwd,shadow,group}
心配しないでください。あいまいなセキュリティはポリシーとしてほとんど役に立ちません。これをそのままにして、残りの方針を強化してください。
アップデート:考えられる解決策
他のユーザー/グループデータベースセットにアクセスする必要があるカスタムソフトウェアがある場合は、関連するPAMおよびNSSモジュールをコピーしてパッチを適用できます。それらカスタムデータベースを使用します。元のUNIXデータベースはそのまま残り、ソフトウェアは難読化されません。ただし、必要に応じてカスタムモジュールを使用するようにPAMとNSSを設定し、自分に合った戦略を使用できます。
UNIXデータベースを本質的にプリミティブに保つことで、必要なものを得ることができます。これはPAM / NSSモジュールが行うこととほぼ同じですradius
。ldap
追加(代替ではありません)資格情報とユーザー/グループ情報のソース。
さらに一歩進んで、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} ファイルに保存されません。