Merge pull request #195497 from mweinelt/crypt-hash-deprecations

Changed files
+23 -4
nixos
doc
manual
configuration
from_md
configuration
modules
+1 -2
nixos/doc/manual/configuration/user-mgmt.chapter.md
···
groups, such as useradd, are no longer available. Passwords may still be
assigned by setting the user\'s
[hashedPassword](#opt-users.users._name_.hashedPassword) option. A
-
hashed password can be generated using `mkpasswd -m
-
sha-512`.
+
hashed password can be generated using `mkpasswd`.
A user ID (uid) is assigned automatically. You can also specify a uid
manually by adding
+1 -1
nixos/doc/manual/from_md/configuration/user-mgmt.chapter.xml
···
Passwords may still be assigned by setting the user's
<link linkend="opt-users.users._name_.hashedPassword">hashedPassword</link>
option. A hashed password can be generated using
-
<literal>mkpasswd -m sha-512</literal>.
+
<literal>mkpasswd</literal>.
</para>
<para>
A user ID (uid) is assigned automatically. You can also specify a
+21 -1
nixos/modules/config/users-groups.nix
···
'';
hashedPasswordDescription = ''
-
To generate a hashed password run `mkpasswd -m sha-512`.
+
To generate a hashed password run `mkpasswd`.
If set to an empty string (`""`), this user will
be able to log in without being asked for a password (but not via remote
···
${pkgs.perl.withPackages (p: [ p.FileSlurp p.JSON ])}/bin/perl \
-w ${./update-users-groups.pl} ${spec}
+
'';
+
};
+
+
# Warn about user accounts with deprecated password hashing schemes
+
system.activationScripts.hashes = {
+
deps = [ "users" ];
+
text = ''
+
users=()
+
while IFS=: read -r user hash tail; do
+
if [[ "$hash" = "$"* && ! "$hash" =~ ^\$(y|gy|7|2b|2y|2a|6)\$ ]]; then
+
users+=("$user")
+
fi
+
done </etc/shadow
+
+
if (( "''${#users[@]}" )); then
+
echo "
+
WARNING: The following user accounts rely on password hashes that will
+
be removed in NixOS 23.05. They should be renewed as soon as possible."
+
printf ' - %s\n' "''${users[@]}"
+
fi
'';
};