我按照这篇优秀的文章来配置 Kerberos + LDAP:
http://koo.fi/blog/2013/01/06/ubuntu-12-04-active-directory-authentication/
然而,有些本地用户用于服务。
当我尝试以 root 身份更改其中一个服务的密码时,它会要求输入以下信息Current Kerberos password
然后退出:
passwd service1
Current Kerberos password: (I hit enter)
Current Kerberos password: (I hit enter)
passwd: Authentication token manipulation error
passwd: password unchanged
如果我切换到本地用户并执行passwd
,它会要求一次 Kerberos 然后返回到本地:
$ passwd
Current Kerberos password:
Changing password for service1.
(current) UNIX password:
我的配置与我上面发布的网站类似,并且一切运行正常,我只是无法以 root 身份更改本地用户的密码。
在此先感谢您的帮助。
3.8.0-29-generic #42~precise1-Ubuntu
更新 1 2013-01-31:
# cat /etc/pam.d/common-auth
auth [success=3 default=ignore] pam_krb5.so minimum_uid=1000
auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass
auth [success=1 default=ignore] pam_ldap.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
# cat /etc/pam.d/common-password
password [success=3 default=ignore] pam_krb5.so minimum_uid=1000
password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512
password [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass
password requisite pam_deny.so
password required pam_permit.so
password optional pam_gnome_keyring.so
答案1
在 /etc/pam.d/common-password 中,将第一行中的 minimum_uid 更改为大于 1000 的值,例如:
password [success=3 default=ignore] pam_krb5.so minimum_uid=10000
这对我来说很管用。在以 root 身份更改该用户的密码后,您应该在 /var/log/auth.log 中看到以下内容:
Dec 26 12:34:36 3.8.0-29-generic passwd[22667]: pam_unix(passwd:chauthtok): password changed for service1
答案2
@Ameer 关于编辑的回答common-password
是正确的。但是:当您编辑 PAM 的 uid 限制时,不要忘记编辑所有受影响的 PAM 文件!如果您krb5
在 中搜索/etc/pam.d
,您应该会找到所有相关文件:
root@server:/etc/pam.d# grep -R krb5 .
./common-auth:auth [success=2 default=ignore] pam_krb5.so minimum_uid=10000
./common-session-noninteractive:session optional pam_krb5.so minimum_uid=10000
./common-session:session optional pam_krb5.so minimum_uid=10000
./common-account:account required pam_krb5.so minimum_uid=10000
./common-password:password [success=2 default=ignore] pam_krb5.so minimum_uid=10000
例如,如果你只编辑了common-auth
, 但不是common-password
,身份验证适用于本地帐户,但passwd
仍要求输入当前的 kerberos 密码!(这正是导致我到这里的错误。)
答案3
一种间接的方法。用于mkpasswd
生成加密密码:
mkpasswd --method=sha-512
然后使用usermod
更改用户密码:
usermod -p '<encrypted_password_from_mkpasswd>' <username>
答案4
无需安装任何额外内容或修改 pam 设置来更改本地密码。
sudo usermod -p "$(echo "password" | openssl passwd -stdin -6)" user
表示-6
SHA512 加密,对于某些较旧的 Linux 系统,您可能需要将其替换为-1
或-5
。
参考:https://www.mkssoftware.com/docs/man1/openssl_passwd.1.asp