nixos/users-groups: handle password hashes with special meaning
This commit is contained in:
parent
99899e2e46
commit
c37347af7e
@ -6,6 +6,16 @@ let
|
|||||||
ids = config.ids;
|
ids = config.ids;
|
||||||
cfg = config.users;
|
cfg = config.users;
|
||||||
|
|
||||||
|
# Check whether a password hash will allow login.
|
||||||
|
allowsLogin = hash:
|
||||||
|
hash == "" # login without password
|
||||||
|
|| !(lib.elem hash
|
||||||
|
[ null # password login disabled
|
||||||
|
"!" # password login disabled
|
||||||
|
"!!" # a variant of "!"
|
||||||
|
"*" # password unset
|
||||||
|
]);
|
||||||
|
|
||||||
passwordDescription = ''
|
passwordDescription = ''
|
||||||
The options <option>hashedPassword</option>,
|
The options <option>hashedPassword</option>,
|
||||||
<option>password</option> and <option>passwordFile</option>
|
<option>password</option> and <option>passwordFile</option>
|
||||||
@ -596,7 +606,7 @@ in {
|
|||||||
|| cfg.group == "wheel"
|
|| cfg.group == "wheel"
|
||||||
|| elem "wheel" cfg.extraGroups)
|
|| elem "wheel" cfg.extraGroups)
|
||||||
&&
|
&&
|
||||||
(cfg.hashedPassword != null
|
(allowsLogin cfg.hashedPassword
|
||||||
|| cfg.password != null
|
|| cfg.password != null
|
||||||
|| cfg.passwordFile != null
|
|| cfg.passwordFile != null
|
||||||
|| cfg.openssh.authorizedKeys.keys != []
|
|| cfg.openssh.authorizedKeys.keys != []
|
||||||
@ -639,15 +649,13 @@ in {
|
|||||||
content = "${base64}${sep}${base64}";
|
content = "${base64}${sep}${base64}";
|
||||||
mcf = "^${sep}${scheme}${sep}${content}$";
|
mcf = "^${sep}${scheme}${sep}${content}$";
|
||||||
in
|
in
|
||||||
if (user.hashedPassword != null # login disabled
|
if (allowsLogin user.hashedPassword
|
||||||
&& user.hashedPassword != "" # login without password
|
&& user.hashedPassword != "" # login without password
|
||||||
&& builtins.match mcf user.hashedPassword == null)
|
&& builtins.match mcf user.hashedPassword == null)
|
||||||
then
|
then ''
|
||||||
''
|
|
||||||
The password hash of user "${name}" may be invalid. You must set a
|
The password hash of user "${name}" may be invalid. You must set a
|
||||||
valid hash or the user will be locked out of their account. Please
|
valid hash or the user will be locked out of their account. Please
|
||||||
check the value of option `users.users."${name}".hashedPassword`.
|
check the value of option `users.users."${name}".hashedPassword`.''
|
||||||
''
|
|
||||||
else null
|
else null
|
||||||
));
|
));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user