Also thinking out loud.. Why not make use of the public keys that reside on
every host in order to store the password in host-specific files at some
common NFS location?  I tried getting OpenSSL to work with cfengine's keys
(seeing as they're already stored on the cf-serverd host) but it steadfastly
refused to accept the public key.  Maybe someone more OpenSSL savvy can
figure it out.  What does work is extracting the public key from ssh's
keypair.

So, hypothetically, your password update bundle would:

- Do a fileexists test on the output of the following command and if
failure, extract the public key from ssh's keypair and store it somewhere on
the network.  "openssl rsa -in ./ssh_host_rsa_key -pubout -out
/nfs/pubkeys/${sys.uqhost}-pubkey"
- Decrypt the host-specific file at /nfs/crypto/${sys.uqhost} which you
generated using a script that read in the password from stdin and did a "for
host in `ls` ; encryption
- Calculate the appropriate hash for the local host and then do a regline
against /etc/shadow or the sort.  If no match then execute hash update.

It's a lot of crypto-juggling but probably safer than an expect script.
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to