You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
3 years ago
|
#!/bin/sh
|
||
|
# add regular user(s) assigning passwords and attributes of power
|
||
|
|
||
|
# NB: care that the utilities exist; shadow-utils is warranted
|
||
|
|
||
|
add_user() {
|
||
|
useradd -m "$1" &&
|
||
|
usermod -p "" "$1" &&
|
||
|
if [ -n "$GLOBAL_GROUPS" ]; then # some of them might be missing
|
||
|
for group in $GLOBAL_GROUPS; do
|
||
|
usermod -a --groups "$group" "$1" ||:
|
||
|
done
|
||
|
fi ||
|
||
|
echo "*** failed to add user '$1'"
|
||
|
}
|
||
|
|
||
|
set_password() { echo "$1:$2" | chpasswd; }
|
||
|
|
||
|
set_admin() { usermod -a --groups "wheel" "$1"; }
|
||
|
|
||
|
# NB: one must care to purge this from LiveCD if it's installed permanently
|
||
|
set_sudo() {
|
||
|
[ ! -w "/etc/sudoers" ] ||
|
||
|
echo "$1 ALL=(ALL) ALL" >> "/etc/sudoers"
|
||
|
}
|
||
|
|
||
|
# chpasswd is intended for batch use but that would be less comprehensible
|
||
|
[ -z "$GLOBAL_USERS" ] ||
|
||
|
echo "$GLOBAL_USERS" \
|
||
|
| tr ' ' '\n' \
|
||
|
| while IFS=':' read login passwd admin sudo; do
|
||
|
add_user "$login"
|
||
|
[ -z "$passwd" ] || set_password "$login" "$passwd"
|
||
|
[ -z "$admin" ] || set_admin "$login"
|
||
|
[ -z "$sudo" ] || set_sudo "$login"
|
||
|
done
|
||
|
|
||
|
# create special user
|
||
|
[ -z "$GLOBAL_SPEC_USER" ] ||
|
||
|
echo "$GLOBAL_SPEC_USER" \
|
||
|
| tr ' ' '\n' \
|
||
|
| while IFS=':' read login group uid gid homedir shell; do
|
||
|
groupadd -g $gid $group >/dev/null 2>&1 || :
|
||
|
useradd -g $gid -u $uid -d $homedir -s $shell $login >/dev/null 2>&1 || :
|
||
|
usermod -G $group $login || :
|
||
|
done
|