hasSomePassword and hasPassword now check to make sure shadow passwords are enabled.
This commit is contained in:
parent
2559b23482
commit
527975dffe
|
@ -57,8 +57,7 @@ testvm = host "testvm.kitenet.net"
|
|||
& os (System (Debian Unstable) "amd64")
|
||||
& OS.cleanInstallOnce (OS.Confirmed "testvm.kitenet.net")
|
||||
`onChange` propertyList "fixing up after clean install"
|
||||
[ User.shadowConfig True
|
||||
, OS.preserveRootSshAuthorized
|
||||
[ OS.preserveRootSshAuthorized
|
||||
, OS.preserveResolvConf
|
||||
, Apt.update
|
||||
, Grub.boots "/dev/sda"
|
||||
|
|
|
@ -21,6 +21,8 @@ propellor (1.1.0) UNRELEASED; urgency=medium
|
|||
* hasSomePassword and hasPassword now default to using the name of the
|
||||
host as the Context for the password. To specify a different context,
|
||||
use hasSomePassword' and hasPassword' (API change)
|
||||
* hasSomePassword and hasPassword now check to make sure shadow passwords
|
||||
are enabled.
|
||||
* cron.runPropellor now runs propellor, rather than using its Makefile.
|
||||
This is more robust.
|
||||
* propellor.debug can be set in the git config to enable more persistent
|
||||
|
|
|
@ -45,8 +45,7 @@ import Control.Exception (throw)
|
|||
-- > & os (System (Debian Unstable) "amd64")
|
||||
-- > & cleanInstallOnce (Confirmed "foo.example.com")
|
||||
-- > `onChange` propertyList "fixing up after clean install"
|
||||
-- > [ User.shadowConfig True
|
||||
-- > , preserveNetworkInterfaces
|
||||
-- > [ preserveNetworkInterfaces
|
||||
-- > , preserveResolvConf
|
||||
-- > , preserverRootSshAuthorized
|
||||
-- > , Apt.update
|
||||
|
|
|
@ -44,13 +44,15 @@ hasPassword user = property (user ++ "has password") $ do
|
|||
ensureProperty $ hasPassword' user (Context hostname)
|
||||
|
||||
hasPassword' :: UserName -> Context -> Property
|
||||
hasPassword' user context = withPrivData (Password user) context $ \getpassword ->
|
||||
property (user ++ " has password") $
|
||||
getpassword $ \password -> makeChange $
|
||||
withHandle StdinHandle createProcessSuccess
|
||||
(proc "chpasswd" []) $ \h -> do
|
||||
hPutStrLn h $ user ++ ":" ++ password
|
||||
hClose h
|
||||
hasPassword' user context = go `requires` shadowConfig True
|
||||
where
|
||||
go = withPrivData (Password user) context $ \getpassword ->
|
||||
property (user ++ " has password") $
|
||||
getpassword $ \password -> makeChange $
|
||||
withHandle StdinHandle createProcessSuccess
|
||||
(proc "chpasswd" []) $ \h -> do
|
||||
hPutStrLn h $ user ++ ":" ++ password
|
||||
hClose h
|
||||
|
||||
lockedPassword :: UserName -> Property
|
||||
lockedPassword user = check (not <$> isLockedPassword user) $ cmdProperty "passwd"
|
||||
|
|
Loading…
Reference in New Issue