Estou tentando escrever um script idempotente para Linux (MIT kerberos) que aplica um keytab dado por /etc/krb5.keytab
mesclagem com seu conteúdo existente. No MacOS (que, acredito, usa Heimdal) é fácil:
ktutil copy /tmp/ktnew /etc/krb5.keytab
Se a(s) chave(s) /tmp/ktnew
já estiverem lá /etc/krb5.keytab
, ela não será alterada (isso pode ser confirmado com hashes anteriores e posteriores).
A versão do MIT ktutil
parece funcionar apenas interativamente e não tem um equivalente para copy
. Usar rkt
and wkt
anexa (e, portanto, duplica) em vez de mesclar e, portanto, não é idempotente.
É possível fazer isso de forma idempotente (e não interativa) usando as ferramentas do MIT comumente encontradas em sistemas Linux?
Até onde eu sei, não. O MIT Krb5 também vem com o
k5srvutil
script que depende do subcomandokadmin
não interativo doktrem
para remover chaves substituídas (aquelas com um kvno mais antigo que o mais recente), mas é só isso que ele tem.Eu sugeriria que mesclar keytabs não é a coisa certa a se fazer em primeiro lugar – em vez de colocar tudo no keytab da "máquina" (e, portanto, ter que conceder a todos os serviços acesso ao keytab), você deve ter no máximo
host/*
enfs/*
lá, enquanto todo o resto deve usar arquivos keytab distintos. (Serviços que não suportam especificar um keytab nativamente geralmente suportamKRB5_KTNAME=
por meio do ambiente.)A implantação de keytabs se tornaria tão simples quanto substituir o arquivo inteiro.
Em meus próprios projetos (especificamente em uma ferramenta que tenta solicitar idempotentemente uma chave via kadmin's
ktadd
), eu analiso o keytab via Python para determinar se ele já tem uma chave para o principal prestes a ser adicionado. Aqui está um ponto de partida: