Кажется, это должно быть просто, но если это так, я, должно быть, что-то упускаю. У меня есть мастер Linux NIS, с помощью которого я хотел бы иметь возможность изменять пароли пользователей (в случае забытых паролей и т.п.), но я не могу.
Некоторые подробности: я использую Scientific Linux 6.4 с ypserv-2.19-26, ypbind-1.20.4-30 и yp-tools-2.9-12. NIS настроен на использование /etc/yp/passwd
для его карты passwd (т.е. не системный файл passwd). Система сама по себе является клиентом и ypwhich
возвращает "localhost".
Поскольку непривилегированные пользователи не должны входить в систему на главном сервере NIS, у нас есть следующие настройки: /etc/nsswitch.conf
:
passwd: files compat
и это в конце /etc/passwd
:
+::::::/bin/false
К тому же, /etc/pam.d/passwd
содержит стандартные директивы RHEL:
password substack system-auth
/etc/pam.d/system-auth
символическая ссылка на /etc/pam.d/system-auth-ac
, который содержит:
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so md5 shadow nis nullok try_first_pass use_authtok
password required pam_deny.so
(Кстати, мы используем md5 вместо sha512, потому что у нас есть клиенты Solaris, которые не поддерживают sha512.)
Если я сбегу passwd
как root он запрашивает новый пароль, но не может его изменить:
$ sudo passwd phil
Changing password for user phil.
New password:
Retype new password:
NIS password could not be changed.
passwd: Authentication token manipulation error
Файл журнала (/var/log/secure
) бесполезен:
passwd: pam_unix(passwd:chauthtok): password not changed for phil on ypmaster.domain.tld
Если вместо этого я бегу yppasswd
, Я жестяная банка изменить пароль:
$ sudo yppasswd phil
Changing NIS account information for phil on ypmaster.domain.tld.
Please enter root password:
Changing NIS password for phil on ypmaster.domain.tld.
Please enter new password:
Please retype new password:
The NIS password has been changed on ypmaster.domain.tld.
Но для этого требуется любой системный администратор, которому необходимо сбросить пароль, чтобы узнать (или найти в нашем сейфе с заблокированным паролем) системный пароль root, а этого сценария я бы хотел избежать.
Итак, как мне настроить мастер, чтобы мы могли изменять пароли пользователей без необходимости каждый раз вводить системный пароль root?
Как вы обнаружили, вы не можете использовать passwd
как root на NIS-клиенте для изменения паролей пользователей на NIS-сервере. Это действительно здравый смысл в безопасности.
Точно так же вы обнаружили, что yppasswd требует пароль root (на сервере NIS), прежде чем он позволит вам изменить пароль пользователя. Это дополнительная мера безопасности, основанная на том факте, что вы должны быть администратором NIS (root на сервере NIS), чтобы изменять пароли других людей.
К сожалению, это не то, что вам нужно, поэтому yppasswd здесь мешает.
Я думаю, что это на самом деле относительно новая вещь или вариант для конкретной ОС - еще во времена Sun Admin, когда я регулярно имел дело с NIS.
yppasswd
просто доверял вам, если бы вы были root на сервере NIS ...
Из-за вашего требования (разрешение авторизованным администраторам вносить изменения в пароли NIS) я бы посоветовал написать сценарий оболочки (или язык по вашему вкусу), который напрямую редактирует карты NIS и перестраивает / подталкивает их.
Вы можете сделать это с небольшим творчеством sed
работать, а затем предоставьте своим администраторам возможность запускать этот сценарий, используя sudo
.
В конечном итоге, хотя вы, вероятно, захотите отказаться от NIS (LDAP - новая популярность на замену NIS, в значительной степени незаменимая и более простая в управлении).