Forum: Cfengine Help
Subject: Re: 3.0.2 too old?
Author: regan99
Link to topic: https://cfengine.com/forum/read.php?3,20392,21218#msg-21218
I guess I spoke too soon. I thought I understood and correctly implemented
this, but now I notice that it does everything except for updating the password
field in /etc/shadow (using the solution posted by zzamboni above). If I run
the following test, just to modify the password field for a single user, it
works exactly as expected:
body common control
{
bundlesequence => { "test" };
inputs => { "/usr/local/share/doc/cfengine/inputs/cfengine_stdlib.cf" };
}
bundle agent test
{
files:
"/etc/shadow"
comment => "Set the root password...",
edit_line => set_user_field("rob",2,"$1$GLeUVHA8$rL7VMZ4Qb.vVLLJdqeJx6.");
}
I can see that it matched a line in /etc/shadow, and changed field 2:
community> *****************************************************************
community> BUNDLE test
community> *****************************************************************
community>
community>
community> + Private classes augmented:
community>
community> - Private classes diminished:
community>
community>
community>
community> =========================================================
community> files in bundle test (1)
community> =========================================================
community>
community>
community> .........................................................
community> Promise handle:
community> Promise made by: /etc/shadow
community>
community> Comment: Set the password...
community> .........................................................
community>
community> -> Using literal pathtype for /etc/shadow
community> -> Handling file existence constraints on /etc/shadow
community> -> Handling file edits in edit_line bundle set_user_field
community>
community> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
community> BUNDLE set_user_field(
{'rob','2','$1$GLeUVHA8$rL7VMZ4Qb.vVLLJdqeJx6.'} )
community> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
community>
community> Initiate variable convergence...
community> ? Augment scope set_user_field with user (s)
community> ? Augment scope set_user_field with field (s)
community> ? Augment scope set_user_field with val (s)
community> ?? Private class context
community>
community>
community> = = = = = = = = = = = = = = = = = = = = = = = = = = = =
community> field_edits in bundle set_user_field
community> = = = = = = = = = = = = = = = = = = = = = = = = = = = =
community>
community>
community> .........................................................
community> Promise handle:
community> Promise made by: rob:.*
community>
community> Comment: Edit a user attribute in the password file
community> .........................................................
community>
community> - Matched line (rob:!!:15051:0:99999:7:::)
community> -> Stopped at field 2
community> -> Setting field sub-value $1$GLeUVHA8$rL7VMZ4Qb.vVLLJdqeJx6. in
/etc/shadow
community> -> Edited field inside file object /etc/shadow
However, when I execute the bundle that adds the user, the user adding portion
behaves as expected, but the promise made by "/etc/shadow" has "-> This promise
has already been verified" below it, no match is found in the shadow file, and
the password is not updated. I think I'm a little confused about how these
bundles are being executed. Any idesas as to why I'm not able to get the
password updated?
-Rob
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine