次のページ 前のページ 目次へ

9. NIS/NYS インストールのチェック

すべてがうまく行ったら、簡単なコマンドを使ってインストールのチェックを行っ て下さい。例えばパスワードファイルが NIS/NYS で共有されている場合は、

    % ypcat passwd

というコマンドで NIS のパスワードファイルの内容が見られるはずです。また、

    % ypmatch userid passwd

とすれば、指定したユーザのエントリがパスワードファイルから取り出され て表示されます (userid には適当なユーザのログイン名を入れます)。なお ypcatypmatch は、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
のように試してみましょう。


次のページ 前のページ 目次へ