firstboot: validate root shell credentials

Validate passwd.shell.root after reading the credential so it uses
the same target-root shell checks as --root-shell= and prompted input.

Reproducer: CREDENTIALS_DIRECTORY=... systemd-firstboot --root=...
with passwd.shell.root=/bin/nonexistentshell

Before: /etc/passwd was written with the nonexistent root shell and
the command exited successfully.

Follow-up: 416f7b3a11
This commit is contained in:
dongshengyuan
2026-07-18 15:48:34 +08:00
parent 05b49871a2
commit 50eaa51ce1
2 changed files with 9 additions and 0 deletions
+4
View File
@@ -998,6 +998,10 @@ static int prompt_root_shell(int rfd, sd_varlink **mute_console_link) {
if (r < 0)
log_debug_errno(r, "Failed to read credential passwd.shell.root, ignoring: %m");
else {
r = find_shell(rfd, arg_root_shell);
if (r < 0)
return r;
log_debug("Acquired root shell from credential.");
return 0;
}