Następna strona Poprzednia strona Spis treści

9. Weryfikacja instalacji NIS/NYS.

Jeśli wszystko jest w porządku (jak powinno być), powinieneś móc zwersyfikować instalację kilkoma prostymi poleceniami. Zakładając na przykład, że twój plik z hsłami jest dostarczany prze NIS, polecenie

    % ypcat passwd

powinno pokazać ci zawartość pliku z hasłami z NIS. Polecenie

    % ypmatch userid passwd

(gdzie userid jest login-em jakiegoś użytkownika) powinno pokazać ci pozycję w pliku z hasłami dotyczącą tego użytkownika. Programy "ypcat" i "ypmatch" powinny być zawarte w dystrybucji NIS lub NYS.

Jeśli użytkownik nie może sie zalogować, uruchom następujący program po stronie klienta:

#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>

int
main(int argc, char *argv[])
{
  struct passwd *pwd;

  if(argc != 2)
    {
      fprintf(stderr,"Stosowanie: getwpnam nazwa-uzytkownika\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,"Nie znaleziono uzytkownika \"%s\"!\n",argv[1]);

  exit(0);
}

Uruchomienie tego programu z użytkownikiem jako parametr, spowoduje wyświetlenie wszystkich informacji jakie uzyska funkcja getpwnam dla tego użytkownika. Powinno ci to pokazać, która pozycja jest niepoprawna. Najpopularniejszym problemem jest zapisanie "*" w polu hasła.

Razem z biblioteką GNU C 2.1 (glibc 2.1) dostarczane jest narzędzie getent. Użyj tego programu zamiast powyższego na systemie z tą biblioteką. Możesz spróbować:

   getent passwd

lub

   getent passwd login


Następna strona Poprzednia strona Spis treści