在 Linux 中更改服务帐户的 Active Directory 密码

在 Linux 中更改服务帐户的 Active Directory 密码

我真的很陌生,但我正在尝试使用 Kerberos 从我自己的 CentOS 7 机器中验证我的 Active Directory 服务帐户,然后我继续使用 sqlcmd 在远程数据库中运行查询。

为了提供更多背景信息,我的工作 Python 代码片段如下:

import subprocess

kinit = ['kinit', '[email protected]', '-k', '-t', '/usr/local/var/krb5kdc/serviceaccount.keytab']
kinit_cl = subprocess.Popen(kinit, stdout=subprocess.PIPE)
kinit_output = kinit_cl.stdout.read()

klist = ['klist','-l']
klist_cl = subprocess.Popen(klist, stdout=subprocess.PIPE)
klist_output = klist_cl.stdout.read()
print klist_output

if 'KEYRING:persistent' in klist_output:
    print "Service Account Authenticated"
    #proceed to run sqlcmd queries

我的问题更多地与存储我的凭据的密钥表的管理有关,这很好,因为我的密码不是以明文形式存储的。不过,密码每 30 天就会过期,而且我注意到如果我使用密码要从命令行更改我的密码,它会询问我的旧密码。这意味着我必须将其以明确的方式存储在某个地方并传递它,而我很高兴不知道我的密码并让脚本为我管理它。

在 Python 中生成新的强密码不会成为问题,我的问题是我可以使用什么命令来更改密码而不提示输入旧密码。来自的命令kadmin.local说密码已更改,但接受的密码仍然是旧密码。卡德敏即使我将服务帐户作为管理员添加到本地文件中,也会出现以下错误:

[root@osboxes krb5kdc]# kadmin.local -q "addprinc serviceaccount/admin"
Authenticating as principal serviceaccount/[email protected] with password.
WARNING: no policy specified for serviceaccount/[email protected]; 
defaulting to no policy
Enter password for principal "serviceaccount/[email protected]": 
Re-enter password for principal "serviceaccount/[email protected]": 
Principal "serviceaccount/[email protected]" created.
[root@osboxes krb5kdc]# kinit serviceaccount/admin
kinit: Client 'serviceaccount/[email protected]' not found in Kerberos database while getting initial credentials
[root@osboxes krb5kdc]# kadmin serviceaccount
kadmin: Client 'serviceaccount/[email protected]' not found in Kerberos database while initializing kadmin interface

我是否只需要通过卡德敏?否则我该如何编写这个脚本?

相关内容