Linux でパスワード データベース ファイル (/etc/passwd) を変更することは可能ですか?

Linux でパスワード データベース ファイル (/etc/passwd) を変更することは可能ですか?

/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 を設定して、必要な場所でカスタム モジュールを使用するようにし、適切なポリシーを適用することができます。

radiusUNIXデータベースを本質的にきれいな状態に保つことで、あなたが求めていたものが手に入ります。これは、ldapPAM/NSSモジュールが行うこととほぼ同じです。追加(置き換えではありません) 資格情報とユーザー/グループ情報のソース。

さらにもう一歩進んで、PAM と NSS に戻って、UNIX データベースの検索を完全に無効にすることができます。古いソフトウェアのファイルはそのまま残しておきます (当然、ユーザー/グループ データベースのビューは不正確になりますが、少なくとも壊れることはありません)。

答え2

探しているのはpam_pwdfileモジュールです。Debian/Ubuntu ではパッケージが存在しますlibpam-pwdfile(RedHat 由来のディストリビューションについては不明)。

パッケージに同梱されている説明README書に使用方法が説明されています。

答え3

すぐに実行できるかどうかはわかりませんが、ハッキングすれば間違いなく可能です。これを行うには、次のことが必要です。

  1. nsswitch ライブラリ (/lib/libnss_files.so または libnss_db.so - /etc/nsswitch.conf を確認してください) を調整/修正して、他のファイルを読み取るようにします。
  2. pam_unix モジュールを調整/ハックして、他のファイルも読み取れるようにします。

答え4

NIS または LDAP を使用してユーザーを認証します。ユーザーのパスワードは /etc/{password/shadow} ファイルに保存されません。

関連情報