我是一个小团队的“后备”系统管理员,主系统管理员不在。实验室设置对我来说有点新,我还不熟悉它的所有设置方法(我的 Linux 系统管理员技能可能有点过时)。我被要求为用户重置密码,我想“太好了,那只是 passwd -e 用户名”。不幸的是,这给了我:
# /usr/bin/passwd jdoe
Changing password for user jdoe.
Password reset by root is not supported.
passwd: Authentication token manipulation error
起初我以为我只需要使用ldappasswd
,但显然它没有使用 LDAP(/usr/bin/ldappasswd
不存在且系统中找不到该命令)。最后,我检查了一下/etc/nsswitch.conf
,看到了这个:
passwd: files sss
shadow: files sss
group: files sss
附加信息:该系统(以及我的大部分实验室网络)运行在 CentOS 版本 6.6 上。
好吧,我想我的 Linux 技能有点不足或生疏了。什么是“sss”?我如何在这个系统上完成简单的密码重置?
更新信息:
我正在尝试以 root 用户身份重置密码(是的,这不是最好的安全设置,我们启用了 root 登录,而实验室管理员没有 sudo,但我只是备份人员……我只能尝试影响)。 看起来相关的几行来自/etc/sssd/sssd.conf
(最好的猜测,正如我所说,我对一些东西生疏了,比如 IPA):
ipa_domain = sub.domain.mycompany.com
id_provider = ipa
auth_provider = ipa
ldap_autofs_entry_object_class = automount
access_provider = ipa
ipa_hostname = node6.sub.domain.mycompany.com
chpass_provider = ipa
ldap_autofs_entry_key = automountKey
ipa_server = ipa1.sub.domain.mycompany.com, ipa2.sub.domain.mycompany.com
答案1
线索首先是知道/etc/nsswitch.conf
系统上的文件用于配置名称服务交换机Linux 中的功能。摘自维基百科:
名称服务交换机 (NSS) 是类 Unix 操作系统中的一项功能,它为通用配置数据库和名称解析机制提供了多种来源。这些来源包括本地操作系统文件(例如 /etc/passwd、/etc/group 和 /etc/hosts)、域名系统 (DNS)、网络信息服务 (NIS) 和 LDAP。
这句话来自/etc/nsswitch.conf
文件让我们知道Linux“系统安全服务”(sss)是用户密码和相关功能的提供者。
passwd: files sss
下一个线索来自于 的内容/etc/sssd/sssd.conf
。 此配置文件的手册页告诉我们有关chpass_provider
条目的信息,对我来说那是 ipa:
chpass_provider = ipa
此行让我们知道哪些服务器负责运行 ipa 服务:
ipa_server = ipa1.sub.domain.mycompany.com, ipa2.sub.domain.mycompany.com
最后,我只需要登录ipa1.sub.domain.mycompany.com
,我就会发现ipa
确实安装了,以及 LDAP。经过几次明智的互联网搜索,我找到了这个有关通过 IPA 管理密码的 Redhat 页面,这给了我以下有用的步骤:
$ kinit admin
$ ipa user-mod jsmith --password
瞧,完成了!学到的教训:我的实验室系统是一堆杂乱无章的服务器,配置方式(可能)不是标准的,但一些知识渊博的人可以给你一些线索,为你指明正确的方向,顺着线索和互联网搜索,希望能够找到答案。