Если все хорошо (как должно быть), то вы можете проверить ваши настройки несколькими простыми командами. Просмотрите, например, ваш файл паролей для использования с NIS, командой
% ypcat passwd
которая должна вам выдать содержимое файла паролей NIS. Команда
% ypmatch userid passwd
(где userid это имя для входа в систему соответствующего пользователя)
должна выдать вам запись про соответствующего пользователя в файле
паролей NIS. Программы "ypcat" и "ypmatch" должны быть включены в ваш
дистрибутив традиционной 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