#! /bin/sh #---------------------------------------------------------------------------- # remove-user - remove a user # # Copyright (c) 2001-2003 Frank Meyer # # usage: remove-user # or: remove-user user do-remove-homedir # # Creation: 04.11.2001 fm # Last Update: 19.07.2003 fm # # 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. #---------------------------------------------------------------------------- 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' ;; *) echo "`basename $0`: do-remove-homedir must be 'yes' or 'no'" >&2 exit 1 ;; esac ;; *) echo "usage: `basename $0`" >&2 echo " or: `basename $0` [-f] user do-remove-homedir" >&2 exit 1 ;; esac if [ "$interactive" = "true" ] then clrhome colecho "Remove user" gn echo fi if [ "$user" = "" ] then echo -e "User to remove (e.g. 'www'): \c" read user fi if [ "$user" = "" ] then echo /var/install/bin/anykey exit 0 fi line=`grep "^$user:" /etc/passwd` if [ "$line" = "" ] then echo colecho "User $user does not exist" br x br /var/install/bin/anykey exit 0 fi IFS=':' set -- $line if [ $force = false ] then if [ $3 -lt 200 -o $3 -ge 65534 ] then echo colecho "It is not allowed to remove user $user, sorry" br x br /var/install/bin/anykey exit 0 fi fi home=`eval echo ~$user` grep -v "^$user:" /etc/passwd >/tmp/passwd-$$ cp /tmp/passwd-$$ /etc/passwd # cp: keep inode & permissions rm -f /tmp/passwd-$$ grep -v "^$user:" /etc/shadow >/tmp/shadow-$$ cp /tmp/shadow-$$ /etc/shadow # cp: keep inode & permissions rm -f /tmp/shadow-$$ if [ "$do_remove_homedir" = "" ] then if /var/install/bin/ask "Remove home directory $home" then do_remove_homedir=y else do_remove_homedir=n fi fi if [ "$do_remove_homedir" = "y" ] then case "$home" in /home/*) rm -rf $home ;; *) echo "remove-user: did not remove home directory $home" >&2 ;; esac fi if [ "$interactive" = "true" ] then echo /var/install/bin/anykey fi