Недавно я добавил в свой NIS новый (клиентский) сервер. Примерно месяц это работало нормально, но с сегодняшнего дня я внезапно больше не могу входить в систему через SSH. Некоторые другие службы (например, IMAP) на том же сервере работают нормально. Другой клиент NIS, кажется, работает нормально.
Сеанс SSH прекращается сразу после успешного входа в систему:
some.nis.user@nismaster:~$ ssh faultyserv
some.nis.usern@faultyserv's password:
Connection to faultyserv closed by remote host.
Connection to faultyserv closed.
/etc/log/auth.log
содержит:
Aug 31 12:42:22 faultyserv sshd[27909]: pam_unix(sshd:session): session opened for user some.nis.user by (uid=0)
Aug 31 12:42:22 faultyserv sshd[27909]: fatal: login_get_lastlog: Cannot find account for uid 1234
Если я установлю UseLogin yes
в /etc/ssh/sshd_config
Я могу войти в систему, но получаю странную оболочку:
I have no name!@faultyserv:~$ pwd
/home/s/some.nis.user
I have no name!@faultyserv:~$ sudo echo
sudo: unknown uid 1234: who are you?
I have no name!@faultyserv:~$ id some.nis.user
uid=1234 gid=1975(some.nis.user) groups=4294967295,2177(somegroup),/*snip a long grouplist*/
Я думаю, что с NIS что-то не так, но не знаю, как это исправить, есть ли у кого-нибудь идеи?
Мой /etc/nsswitch.conf
содержит (среди других записей без шекелей):
passwd: files nis
group: files nis
shadow: files nis
netgroup: nis
Проблема заключалась в том, что passwd.byuid
карта не была перенесена.
Бег yppush passwd.byuid
на nismaster
выдал ошибку тайм-аута и сгенерировал следующее в faultyserv
с /var/log/syslog
:
Sep 1 09:51:37 faultyserv ypserv[2038]: refuse to transfer passwd.byuid from <ip>, master is faultyserv.mydomain.com)
На подчиненном сервере указан неверный главный сервер:
# ypwhich -m
services.byservicename nismaster
group.bygid nismaster
group.byname nismaster
protocols.bynumber nismaster
services.byname nismaster
hosts.byname nismaster
netgroup.byhost nismaster
rpc.bynumber nismaster
passwd.byuid faultyserv.mydomain.com
netgroup nismaster
ypservers nismaster
shadow.byname faultyserv.mydomain.com
passwd.byname nismaster
hosts.byaddr nismaster
protocols.byname nismaster
rpc.byname nismaster
netgroup.byuser nismaster
netid.byname faultyserv.mydomain.com
Повторный запуск /usr/lib/yp/ypinit -s nismaster
на faultyserv
исправил проблему
Иногда это может происходить в системах Debian из-за использования
# shadowconfig on
Это помещает конфиденциальные хэши паролей в теневые файлы и перезаписывает файл passwd и group с идентичными пустыми записями «x».
Перед пересборкой файлов passwd и group вы должны сделать это на мастере НИС
# shadowconfig off
В Debian это
# cd /var/lib/yp
# make all
Не забывайте специальные записи, которые вы должны добавить в passwd и сгруппировать в клиенты, вот запись passwd (после postgres).
postgres:x:115:124:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
+::::::
Вот групповой после самбашары.
sambashare:x:125:
+:::
А также упоминания в /etc/nsswitch.conf для "nis"