"ypcat" и "ypmatch username passwd" не согласны после изменения на сервере - PullRequest
3 голосов
/ 28 августа 2008

Я пытаюсь использовать 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 ]

6 голосов
/ 15 октября 2012

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

Он прав. Если вы установите «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.

2 голосов
/ 10 сентября 2010

Обнаружена та же проблема - 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 продолжит использовать старые карты, а не обновленные. «

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

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

1 голос
/ 28 августа 2008

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

0 голосов
/ 04 января 2017

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

0 голосов
/ 29 августа 2008

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

...