"ypcat" и "ypmatch username passwd" не согласны после изменения на сервере

Я пытаюсь использовать NIS для аутентификации на компьютере. Мне пришлось изменить один из идентификаторов пользователя для учетной записи пользователя на сервере NIS (я изменил идентификатор пользователя для username от 500 до 509, чтобы избежать конфликта с локальной учетной записью пользователя с идентификатором 500 на клиентах). Проблема в том, что он не обновился должным образом на клиенте.

В частности, если я сделаю ypcat passwd | grep usernameЯ получаю актуальную информацию:

username:*hidden*:509:509:User Name:/home/username:/bin/bash

Но если я сделаю, ypmatch username passwd, это говорит:

username:*hidden*:500:500:User Name:/home/username:/bin/bash

Это означает, что когда пользователь входит в систему на одном из клиентов, он имеет неверный ИД пользователя, что вызывает все виды проблем. я сделал "cd /var/yp; make" на сервере, и "service ypbind restart" на клиенте, но это не решило проблему. Кто-нибудь знает, что может быть причиной этого, и как я могу как-то принудительно обновить клиент? (Я использую Fedora 8 как на клиенте, так и на сервере).

5 ответов

Джон О указал мне в правильном направлении.

Он прав. Если вы установите "files: 0" в /etc/ypserv.conf, вы можете заставить ypserv не кэшировать файлы. Если вам нужно перезапускать ypserv после каждой сборки, это проблема.

Реальное решение - поискать в / var / log / messages эту ошибку:

ypserv[]: refused connect from 127.0.0.1 to procedure ypproc_clear (,;0)

makedbm -c означает: отправить YPPROC_CLEAR в локальный ypserv. Сообщение об ошибке в журнале означает, что сообщение CLEAR отклоняется. Вам нужно добавить 127.0.0.1 в / var / yp / securenets.

Обнаружена такая же проблема - RHEL 5.5. Измените (любую) исходную карту, затем запустите make. ypcat показывает измененную информацию, ypmatch - нет. Все, что нужно на самом деле --use-- новая карта терпит неудачу. Как и в прошлом посте, перезапуск ypserv делает все ОК. После нескольких дней тестирования, запуска strace и т. Д. Я обнаружил, что у ypserv есть "кэш дескриптора файла", управляемый записью "file:" в /etc/ypserv.conf --- значение по умолчанию равно 30. Измените это на 0 и все работает по марке.

Не должно этого делать --- На странице man для ypserv.conf...

"Между ypserv 1.1 и ypserv 1.2 произошло одно большое изменение. Начиная с версии 1.2, дескрипторы файлов кэшируются. Это означает, что вам нужно всегда вызывать makedbm с опцией -c, если вы создаете новые карты. Убедитесь, что вы используете новую /var/yp/Makefile из ypserv 1.2 или новее или добавьте флаг -c к makedbm в Makefile. Если вы этого не сделаете, ypserv будет продолжать использовать старые карты, а не обновленные. "

Makefile использует "makedbm -c", но ypserv использует старую (кэшированную) карту.

Ответ: не кэшируйте дескрипторы файлов, например, установите "files: 0" в ypserv.conf

ОК, я обнаружил проблему, мне также пришлось перезапустить службу NIS на сервере, чтобы она обновляла все ("service ypserv restart")

Это из-за демона nscd. установите время жизни в 60 в /etc/nscd.conf для сеанса passwd. Это будет работать

Хм, вам не нужно перезапускать ypserver, чтобы обновления вступили в силу; make в / var / yp должен помочь. Возможно, вы захотите проверить Makefile в / var / yp, чтобы убедиться, что он запускается в правильных условиях (а именно, passwd.by * должен каким-то образом проверять временную метку на / etc / passwd по сравнению с его текущей таблицей). пройти через правило passwd.time на сервере NIS, который я запускал, еще в темные времена). Уничтожение и перезапуск вашего nis-сервера может привести к неожиданным последствиям для клиентов (в частности, не для Linux), поэтому будьте осторожны, делая это невольно.

Другие вопросы по тегам