debian: make it possible to add or update a user

This commit is contained in:
Fernando Schauenburg 2023-07-15 17:14:04 +02:00
parent 6beadf8d21
commit e4e74168eb

View file

@ -3,6 +3,7 @@ set -e
USERNAME=fernando USERNAME=fernando
DOTFILES_URL="https://github.com/fschauen/dotfiles.git" DOTFILES_URL="https://github.com/fschauen/dotfiles.git"
NEOVIM_VERSION="0.9.1" NEOVIM_VERSION="0.9.1"
GIT_DELTA_VERSION="0.16.5" GIT_DELTA_VERSION="0.16.5"
LF_VERSION="r30" LF_VERSION="r30"
@ -151,17 +152,50 @@ install_lf() {
fi fi
} }
setup_user() { user_setup() {
# Change shell to `zsh` and get rid of bash files. if user_exists "$1"; then
$cmd chsh -s /bin/zsh "$USERNAME" echo "User $1 exists. Updating..."
$cmd rm -vf $(printf "/home/$USERNAME/%s " .bash_history .bash_logout .bashrc .profile) user_update "$1"
else
echo "${yellow}SKIPPED:${sgr0} ${lf_install_dir} exists"
echo "Creating user $1..."
user_new "$1"
fi
# Add user to the `staff` group. user_allow_sudo_nopasswd "$1"
$cmd usermod -aG staff "$USERNAME" }
# Allow `sudo` without password for this user. user_exists() {
$cmd echo "$USERNAME ALL=(ALL:ALL) NOPASSWD:ALL" | \ id -u "$1" >/dev/null 2>&1
$pipe_cmd dd status=none of="/etc/sudoers.d/${USERNAME}_nopasswd" }
user_new() {
empty_skel="$(mktemp -d)"
$cmd useradd \
-m ` # Create home directory.` \
-k "$empty_skel" ` # Copy files from this directory into the new home.` \
-U ` # Create a groups with the same name as the user.` \
-G staff ` # Other groups the new user will be a member of.` \
-s /bin/zsh ` # The new user's login shell. ` \
"$1" ` # The new user's name.` \
>/dev/null 2>&1 ` # Silently.` \
rmdir "$empty_skel"
}
# Add user $1 to the `staff` group...
# ...and change shell to `zsh` and get rid of bash files.
user_update() {
$cmd usermod -aG staff "$1"
$cmd chsh -s /bin/zsh "$1"
$cmd rm -vf $(printf "/home/$1/%s " .bash_history .bash_logout .bashrc .profile)
}
# Allow `sudo` without password for user $1.
user_allow_sudo_nopasswd() {
$cmd echo "$1 ALL=(ALL:ALL) NOPASSWD:ALL" | \
$pipe_cmd dd status=none of="/etc/sudoers.d/${1}_nopasswd"
} }
deploy_dotfiles() { deploy_dotfiles() {
@ -194,7 +228,7 @@ execute() {
install_lf install_lf
heading "Setup user: $USERNAME" heading "Setup user: $USERNAME"
setup_user user_setup "$USERNAME"
heading "Deploy dotfiles" heading "Deploy dotfiles"
deploy_dotfiles deploy_dotfiles