Mk/Scripts/do-users-groups.sh: Make users and groups creation fail-fast

Fail fast when pw(8) fails to create a user or a group. Especially when it is
not the last command in the pre-install script then the exit code will be 0 and
the failure will go unnoticed.

PR:		267384
Approved by:	jrm (mentor)
Differential Revision:	https://reviews.freebsd.org/D42719
This commit is contained in:
Michael Osipov 2023-11-22 12:30:32 +01:00
parent db880cf972
commit 4280a82efe

View file

@ -76,7 +76,7 @@ if [ -n "${GROUPS}" ]; then
cat >> "${dp_UG_INSTALL}" <<-eot2 cat >> "${dp_UG_INSTALL}" <<-eot2
if ! \${PW} groupshow $group >/dev/null 2>&1; then if ! \${PW} groupshow $group >/dev/null 2>&1; then
echo "Creating group '$group' with gid '$gid'" echo "Creating group '$group' with gid '$gid'"
\${PW} groupadd $group -g $gid \${PW} groupadd $group -g $gid || exit \$?
else else
echo "Using existing group '$group'" echo "Using existing group '$group'"
fi fi
@ -129,7 +129,7 @@ if [ -n "${USERS}" ]; then
cat >> "${dp_UG_INSTALL}" <<-eot2 cat >> "${dp_UG_INSTALL}" <<-eot2
if ! \${PW} usershow $login >/dev/null 2>&1; then if ! \${PW} usershow $login >/dev/null 2>&1; then
echo "Creating user '$login' with uid '$uid'" echo "Creating user '$login' with uid '$uid'"
\${PW} useradd $login -u $uid -g $gid $class -c "$gecos" -d $homedir -s $shell \${PW} useradd $login -u $uid -g $gid $class -c "$gecos" -d $homedir -s $shell || exit \$?
else else
echo "Using existing user '$login'" echo "Using existing user '$login'"
fi fi
@ -185,7 +185,7 @@ if [ -n "${GROUPS}" ]; then
cat >> "${dp_UG_INSTALL}" <<-eot2 cat >> "${dp_UG_INSTALL}" <<-eot2
if ! \${PW} groupshow ${group} | grep -qw ${login}; then if ! \${PW} groupshow ${group} | grep -qw ${login}; then
echo "Adding user '${login}' to group '${group}'" echo "Adding user '${login}' to group '${group}'"
\${PW} groupmod ${group} -m ${login} \${PW} groupmod ${group} -m ${login} || exit \$?
fi fi
eot2 eot2
fi fi