NIS に shadow パスワードを流通させるのは良い考えではありません。
shadow システムのメリットであるセキュリティが失われてしまうからです。
それにこれがサポートされている Linux C ライブラリは少数に過ぎません。
NIS 上に shadow を流さないようにするには、ローカルシステムの
ユーザだけを /etc/shadow
に登録することです。 NIS に流す
ユーザエントリを shadow データベースから削除し、それらのパスワードは
passwd に書いて下さい。こうすれば root ログインには shadow を、
一般の NIS ユーザには passwd を用いることができるようになります。
この方法なら、すべての NIS クライアントでうまく動作します。
NIS で shadow パスワードを用いることができる唯一の Linux libc は GNU C Library 2.x です。 Linux libc5 はこれをサポートしていません。 Linux libc5 を NYS と一緒にコンパイルした場合は、多少のコードが 含まれることにはなります。でもこのコードは状況によってはひどく 壊れてしまい、 shadow エントリが全て正しい場合でも動作しないことが あります。
Solaris は NIS 上での shadow パスワードをサポートしていません。
PAM は NIS 上での shadow パスワードをサポートしません。 特に pam_pwdb/libpwdb がだめなんです。これは RedHat 5.x ユーザに とって大きな問題です。 glibc と PAM を使っている場合は、 /etc/pam.d/* のエントリを変更する必要があります。 pam_unix_* モジュールにある pam_pwdb のルールを置き換えて下さい。 しかし pam_unix_auth.so モジュールにはバグがあるので、 これは必ず動作するとは限りません。
/etc/pam.d/login の例としては以下のようになるでしょう。
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_unix_auth.so
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_unix_acct.so
password required /lib/security/pam_unix_passwd.so
session required /lib/security/pam_unix_session.so
auth には pam_unix_auth.so モジュールを用い、account には pam_unix_acct.so を、 password には pam_unix_passwd.so を、 session には pam_unix_session.so を用います。