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 |