#! /bin/sh #---------------------------------------------------------------------------- # /var/install/bin/remove-user - remove a user # # Copyright (c) 2001-2005 Frank Meyer # # Creation: 04.11.2001 fm # Last Update: $Id$ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # usage: remove-user # or: remove-user [-f] user do-remove-homedir # # -f force remove # remove user even uid is less 200 # or uid is greater 65533 # # do-remove-homedir # y/yes remove home directory # n/no to not remove home directory # # home directory is not removed if it is # not located in /home # # Return: 0 user was removed # or # no user selected in interactive mode # 1 wrong usage # or # question interrupted # 2 user does not exist # or # user is system user and -f was not used # #---------------------------------------------------------------------------- # include eislib . /var/install/include/eislib if [ "$1" = "-f" ] then force=true shift else force=false fi case $# in 0) interactive='true' user="" do_remove_homedir="" ;; 2) interactive='false' user="$1" do_remove_homedir="$2" case "$do_remove_homedir" in y | yes) do_remove_homedir='y' ;; n | no) do_remove_homedir='n' ;; *) mecho -error "`basename $0`: do-remove-homedir must be 'yes' or 'no'" >&2 exit 1 ;; esac ;; *) mecho "usage: `basename $0`" >&2 mecho " or: `basename $0` [-f] user do-remove-homedir" >&2 exit 1 ;; esac if [ "$interactive" = "true" ] then clrhome mecho -info "Remove user" mecho fi if [ "$user" = "" ] then /var/install/bin/ask "User to remove (e.g. 'www')" "" "*" > /tmp/ask.$$ rc=$? user=`cat /tmp/ask.$$` rm -f /tmp/ask.$$ [ $rc = 255 ] && exit 1 fi if [ "$user" = "" ] then mecho anykey exit 0 fi line=`grep "^$user:" /etc/passwd` if [ "$line" = "" ] then mecho mecho -error "User $user does not exist" #anykey exit 2 fi OLDIFS="$IFS" IFS=':' set -- $line IFS="$OLDIFS" if [ $force = false ] then if [ $3 -lt 200 -o $3 -ge 65534 ] then mecho mecho -error "It is not allowed to remove system user $user, sorry" #anykey exit 2 fi fi home=`eval echo ~$user` if [ "$do_remove_homedir" = "" ] then /var/install/bin/ask "Remove home directory $home" "n" rc=$? case $rc in 0) do_remove_homedir=y;; 1) do_remove_homedir=n;; *) exit 1;; esac fi if [ "$do_remove_homedir" = "y" ] then /usr/sbin/userdel -r "$user" 2>&1 | grep -v 'fcrontab' else /usr/sbin/userdel "$user" 2>&1 | grep -v 'fcrontab' fi if [ "$interactive" = "true" ] then mecho anykey fi