web-dev-qa-db-ja.com

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

パスワードデータベースファイルを変更することは可能ですか(/etc/passwd)を他のファイルに。この認証メカニズムは内部でどのように機能しますか?それはpamに依存しますか?

8
nitins

そのとおりです:/etc/passwd/etc/shadowは、PAMの一部であるpam_unix.soからコンサルトされます。少なくとも最近のLinuxでは。 pam_unix.soにパッチを適用することでこれを変更できます。マンページが信頼できる場合は、システムデータベースの場所を変更することはできません。

そして、あなたは本当にしたくありません。 /etc/passwdは、認証だけでなく、(逆の)名前解決や、ユーザーのフルネーム、シェルなどの検索にも使用されます。名前と場所は非常に標準化されているため、それらを移動すると、ほぼ間違いなくPAM以外のものが壊れます。あなたはあなたが交渉したよりもはるかに多くのパッチを当てる必要があるでしょう。

更新:セキュリティのために/etc/{passwd,shadow,group}ファイルを非表示にしようとしている場合でも、心配する必要はありません。隠すことによるセキュリティがポリシーとして役立つことはめったにありません。それらをそのままにして、残りのポリシーを厳しくします。

更新:可能な解決策

カスタムソフトウェアがあり、ユーザー/グループデータベースの別のセットにアクセスする必要がある場合は、関連するPAMおよびNSSモジュールのコピーとパッチthemカスタムデータベースを使用します。元のUNIXデータベースは元の場所にあるため、ソフトウェアが混乱することはありませんが、PAMとNSSを設定して、必要なときにカスタムモジュールを使用し、理にかなったポリシーを使用できます。

UNIXデータベースを本質的に無垢に保ち、あなたが求めていたものを手に入れましょう。これは、radiusおよびldap PAM/NSSモジュールが行うこととほぼ同じです。これらは追加を提供します(置換ではありません) )資格情報のソースおよびユーザー/グループ情報。

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

7
Alexios

あなたが探しているのはpam_pwdfileモジュール。 Debian/Ubuntuでは、パッケージはlibpam-pwdfile(RedHat派生ディストリビューションについては不明)。

パッケージに含まれているREADMEは、その使用方法を説明しています。

6
bahamat

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

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

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

1
jlliagre