#!/bin/bash # # .---. . . # | | | # |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. # | | (.-' (.-' ( | ( )| | | | )( )| | (.-' # ' ' --' --' -' - -' ' ' -' -' -' ' - --' # # Freedom in the Cloud # # Removes a user from the system # License # ======= # # Copyright (C) 2015-2016 Bob Mottram # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . PROJECT_NAME='freedombone' export TEXTDOMAIN=${PROJECT_NAME}-rmuser export TEXTDOMAINDIR="/usr/share/locale" MY_USERNAME=$1 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-* for f in $UTILS_FILES do source $f done APP_FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* for f in $APP_FILES do source $f done if [ ! $MY_USERNAME ]; then echo $'Please specify a username to remove' exit 1 fi if [[ $MY_USERNAME == 'git' || $MY_USERNAME == 'mirrors' ]]; then echo $'Cannot remove reserved users' exit 2 fi if [ ! -d /home/$MY_USERNAME ]; then echo $"Home directory does not exist for $MY_USERNAME" exit 3 fi if [ ! -f $COMPLETION_FILE ]; then echo $"$COMPLETION_FILE not found" exit 4 fi if ! grep -q "Admin user" $COMPLETION_FILE; then echo $"No admin user specified in $COMPLETION_FILE" exit 5 fi ADMIN_USERNAME=$(get_completion_param "Admin user") if [ ! $ADMIN_USERNAME ]; then echo $"No admin username specified in $COMPLETION_FILE" exit 6 fi if [[ $MY_USERNAME == $ADMIN_USERNAME ]]; then echo $"The administrator user cannot be removed" exit 7 fi echo $'>>> REMOVE USER <<<' read -p $"Do you really wish to remove the user '$MY_USERNAME' (y/n) ?" yn if [[ $yn != 'y' && $yn != 'Y' && $yn != 'yes' && $yn != 'Yes' && $yn != 'YES' ]]; then echo $"User $MY_USERNAME was not removed" exit 8 fi if [ -f /etc/nginx/.htpasswd ]; then if grep "${MY_USERNAME}:" /etc/nginx/.htpasswd; then htpasswd -D /etc/nginx/.htpasswd $MY_USERNAME fi fi # remove gpg keys if [ -d /home/$MY_USERNAME/.gnupg ]; then shred -zu /home/$MY_USERNAME/.gnupg/* fi # remove ssh keys if [ -d /home/$MY_USERNAME/.ssh ]; then shred -zu /home/$MY_USERNAME/.ssh/* fi echo $'Detecting installed apps...' detect_apps get_apps_installed_names for app_name in "${APPS_INSTALLED_NAMES[@]}" do if [[ $(function_exists remove_user_${app_name}) == "1" ]]; then echo $"Removing user from ${app_name}" app_load_variables ${app_name} remove_user_${app_name} "$MY_USERNAME" if grep -q "${app_name}_${MY_USERNAME}" $APP_USERS_FILE; then sed -i "/${app_name}_${MY_USERNAME}/d" $APP_USERS_FILE fi fi done userdel -r $MY_USERNAME if [ -d /home/$MY_USERNAME ]; then rm -rf /home/$MY_USERNAME fi echo $"User $MY_USERNAME was removed" exit 0