Avanti Indietro Indice

9. Verificare l'installazione di NIS/NYS

Se tutto è a posto (come dovrebbe essere), si dovrebbe essere essere in grado di verificare l'installazione con pochi semplici comandi. Assunto, per esempio, che il proprio file passwd sia gestito da NIS, il comando

    % ypcat passwd

dovrebbe restituire il contenuto del proprio file NIS passwd. Il comando

    % ypmatch userid passwd

(dove userid è il nome di login di un utente arbitrario) dovrebbe restituire la voce relativa all'utente nel file NIS passwd. I programmi ``ypcat'' e ``ypmatch'' dovrebbero essere inclusi nella propria distribuzione di NIS tradizionale o NYS.

Se un utente non riesce a fare il login, si esegua il programma seguente nel client:

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

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

  if(argc != 2)
    {
      fprintf(stderr,"Uso: getwpnam nomeutente\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,"Utente \"%s\" non trovato!\n",argv[1]);

  exit(0);
}

L'esecuzione di questo programma con il nome utente come parametro, mostrerà tutte le informazioni che la funzione getpwnam restituisce per quell'utente. Ciò dovrebbe mostrare quale voce non è corretta. Il problema più comune è che il campo della password è stato sovrascritto con un ``*".

La GNU C Library 2.1 (glibc 2.1) contiene uno strumento chiamato gentent. In un sistema di questo tipo si usi questo programma invece di quello qua sopra. Si può provare:

   getent passwd
o
   getent passwd login


Avanti Indietro Indice