Alterando a senha do Active Directory para a conta de serviço no Linux

2

Eu sou muito novo, mas estou tentando usar o Kerberos para autenticar minha conta de serviço de diretório ativo da minha própria caixa do CentOS 7, após o qual eu então procuro executar consultas em um banco de dados remoto usando sqlcmd.

Para dar mais contexto, um trecho do meu código Python em funcionamento está abaixo:

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

Minha pergunta se relaciona mais com o gerenciamento do keytab onde minha credencial está armazenada, o que é ótimo porque minha senha não é armazenada em branco. A senha expira a cada 30 dias e notei que, se eu usar kpasswd para alterar minha senha na linha de comando, ela solicitará minha senha antiga. Isso significaria que eu teria que armazená-lo em algum lugar e passá-lo, enquanto estou feliz em não saber minha senha e deixar um script gerenciar isso para mim.

Para gerar uma nova senha strong no Python não será um problema, minha pergunta é qual comando posso usar para alterar uma senha sem ser solicitada a senha antiga. Um comando de kadmin.local diz que a senha foi alterada, mas a senha aceita ainda é a senha antiga. kadmin me dá o erro abaixo, embora eu tenha adicionado a conta de serviço como administrador ao arquivo 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

Eu preciso fazer isso apenas através do kadmin ? Ou então como eu escreveria isso?

    
por Recycle_Bin28 14.06.2017 / 11:51

0 respostas