すべてがうまく行ったら、簡単なコマンドを使ってインストールのチェックを行っ て下さい。例えばパスワードファイルが NIS/NYS で共有されている場合は、
% ypcat passwd
というコマンドで NIS のパスワードファイルの内容が見られるはずです。また、
% ypmatch userid passwd
とすれば、指定したユーザのエントリがパスワードファイルから取り出され
て表示されます (userid
には適当なユーザのログイン名を入れます)。なお
ypcat
や ypmatch
は、NIS や NYS の配布パッケージに入っています。
ユーザーによるログインができない場合には、以下のプログラムをクライアン トで実行してみて下さい。
#include <stdio.h> #include <pwd.h> #include <sys/types.h> int main(int argc, char *argv[]) { struct passwd *pwd; if(argc != 2) { fprintf(stderr,"Usage: getwpnam username\n"); exit(1); } pwd=getpwnam(argv[1]); if(pwd != NULL) { printf("name.....: [%s]\n",pwd->pw_name); printf("password.: [%s]\n",pwd->pw_passwd); printf("user id..: [%d]\n", pwd->pw_uid); printf("group id.: [%d]\n",pwd->pw_gid); printf("gecos....: [%s]\n",pwd->pw_gecos); printf("directory: [%s]\n",pwd->pw_dir); printf("shell....: [%s]\n",pwd->pw_shell); } else fprintf(stderr,"User \"%s\" not found!\n",argv[1]); exit(0); }
このプログラムをユーザ名をパラメータとして実行しますと、そのユーザに対
して getpwnam 関数が返す情報が全て表示されます。これによって、どのエン
トリが間違っているかがわかるでしょう。よくある間違いとしては、パスワー
ドのフィールドが "*
" によって上書きされている、などがあり
ます。
GNU C Library 2.1 (glibc 2.1) には getent というツールがついてきます。 そのようなシステムでは、上記の代わりにこちらを使いましょう。
getent passwd
や
getent passwd login
のように試してみましょう。