define passwordcomplexity($lowercase = "1", $uppercase = "1",
$numeric = "1", $special = "1") {
augeas { "add_lowercase_reqs" :
context => "/files/etc/pam.d",
changes => "set
system-auth/*[module='pam_cracklib.so']/argument[last()+1]
lcredit=-$lowercase",
onlyif => "match
system-auth/*[argument='lcredit=*'] size == 0",
}
augeas { "add_uppercase_reqs" :
context => "/files/etc/pam.d",
changes => "set
system-auth/*[module='pam_cracklib.so']/argument[last()+1]
ucredit=-$uppercase",
onlyif => "match
system-auth/*[argument='ucredit=*'] size == 0",
}
augeas { "add_numeric_reqs" :
context => "/files/etc/pam.d",
changes => "set
system-auth/*[module='pam_cracklib.so']/argument[last()+1]
dcredit=-$numeric",
onlyif => "match
system-auth/*[argument='dcredit=*'] size == 0",
}
augeas { "add_special_reqs" :
context => "/files/etc/pam.d",
changes => "set
system-auth/*[module='pam_cracklib.so']/argument[last()+1]
ocredit=-$special",
onlyif => "match
system-auth/*[argument='ocredit=*'] size == 0",
}
}
This will continuously append lcredit=-2, etc onto the end of the
line, without checking the values that currently exist:
----------------------------------------------------
password requisite pam_cracklib.so try_first_pass retry=3
maxrepeat=3 lcredit=-2 ocredit=-2 dcredit=-2
ucredit=-2 dcredit=-2 ocredit=-2 lcredit=-2
ucredit=-2
-----------------------------------------------------
~Ed
define passwordcomplexity($retry = "3", $lowercase = "1",
$uppercase = "1", $numeric = "1", $special = "1", $maxrepeats = "3") {
augeas { "rebuild_passwordcomplex_reqs" :
context => "/files/etc/pam.d",
changes => ["rm system-auth/
*[module='pam_cracklib.so'][type='password']/argument",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] try_first_pass",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] retry=$retry",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] maxrepeats=
$maxrepeats",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] lcredit=-$lowercase",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] ucredit=-$uppercase",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] dcredit=-$numeric",
"set system-auth/
*[module='pam_cracklib.so']/argument[last()+1] ocredit=-$special"],
}
If anyone knows how to use onlyif and match/get to get an augeas
argument based on a regular expression, I'd be happy hear about it.
~Ed
--
Joe McDonagh
AIM: YoosingYoonickz
IRC: joe-mac on freenode
L'ennui est contre-r�volutionnaire
Have you thought about doing this based on Augeas rather than
ParsedFile ? Depending on what exactly you want your type to do, you
might even be able to write it as a 'define' in puppet, rather than
having to drop to Ruby. If the logic in your type is complex enough,
though, and you have to write it in Ruby, you can still use Augeas to
access, query and modify the pam entries.
David
> I have not thought about using augeas because last time I tried to
> build it for our standard OS (Ubuntu 8.04) IIRC it needed a newer
> version of glibc.
I didn't have any trouble building the current ubuntu augeas packages
for 8.04. I followed the pretty normal dpkg build process for
it. (apt-get source; apt-get build-dep; debuild) No glibc weirdness.
seph
I was thinking it might be useful for this type to have both a
parsedfile and augeas provider. What do you guys think?
And yes I do usually use definitions for stuff like this, but I just
feel like puppet should have some security types, and IIRC the solaris
ones don't differ much from the linux ones so it's partly a
unix-agnostic type.
Anybody else have more input on that last statement?
add OS X to the Solaris/Linux PAM mix too? :)
OS X 10.6 in particular makes PAM a lot more useful and authoritative.
>
> --
> Joe McDonagh
> AIM: YoosingYoonickz
> IRC: joe-mac on freenode
> L'ennui est contre-révolutionnaire
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To post to this group, send email to puppet...@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.
>
>
--
nigel
--
Joe McDonagh
AIM: YoosingYoonickz
IRC: joe-mac on freenode
L'ennui est contre-r�volutionnaire
I haven't seen that problem - but if you run into it again, I'd very
much appreciate any build logs you have (compiler output etc.)
I try very hard to make Augeas only rely on a very minimalistic C
library (it builds on AIX ;)
David