Se ogni cosa è a posto (come dovrebbe essere), c'è la possibilità di > verificare l'installazione con pochi e semplici comandi. Si assuma, per esempio, che il file passwd sia gestito da NIS, il comando
% ypcat passwd |
dovrebbe restituire i contenuti del file passwd di NIS. Il comando
% ypmatch userid passwd |
(dove userid è il nome di login di un utente arbitrario) dovrebbe restituire la voce dell'utente nel file passwd di NIS. I programmi "ypcat" e "ypmatch" dovrebbero essere inclusi con la distribuzione del NIS tradizionale o del NYS.
Se un utente non riesce a fare il login, eseguire il seguente programma da un 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,"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);
} |
Eseguendo il programma con il nome dell'utente (username) come parametro, stamperà tutte le informazioni che la funzione getpwnam restituisce per questo utente. Questo dovrebbe mostrare quale voce non è corretta. Il problema più comune è che il campo della password è stato sovrascritto con un "*".
GNU C Library 2.1 (glibc 2.1) contiene uno strumento chiamato getent. Si usi questo programma invece di quello sopra in un sistema di questo tipo. Si può provare:
getent passwd |
getent passwd login |