summaryrefslogtreecommitdiff
path: root/deluser.local
blob: 312504a56a4cbabbec20bda109e1b4b458942770 (plain)
  1. #!/bin/sh
  2. #
  3. # /usr/local/sbin/deluser.local
  4. # Copyright 2001-2006 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: deluser.local,v 1.21 2006-07-16 12:34:00 jonas Exp $
  7. #
  8. # Common deluser additions for Spiff and Xenux networks
  9. #
  10. # TODO: Allow local overriding of using /etc/mailname
  11. # TODO: Print list (not email) for each mailinglist, and all on one line
  12. #
  13. OLDUSERNAME=$1
  14. OLDUID=$2
  15. OLDGID=$3
  16. OLDHOMEDIR=$4
  17. fullname() { getent passwd $NEWUSERNAME | awk -F: '{print $5}' | awk -F, '{print $1}'; }
  18. maildomain() { if [ -r /etc/mailname ]; then head -n 1 /etc/mailname; fi; }
  19. listlists() { if [ -x /usr/sbin/list_lists ]; then /usr/sbin/list_lists -ab -V "$1"; fi; }
  20. delfromlist() { /bin/echo "$1" | /usr/sbin/remove_members -f - "$2"; }
  21. . /etc/adduser.conf
  22. #. /etc/deluser.conf
  23. # Workaround: default deluser.conf is not sh-compatible (like adduser.conf)
  24. REMOVE_HOME=`grep REMOVE_HOME /etc/deluser.conf | awk -F= '{print $2}' | head -n 1 | sed 's/^ //g'`
  25. # Ignore non-human accounts silently
  26. [ "$OLDUID" -ge "$FIRST_UID" -a "$OLDUID" -le "$LAST_UID" ] || exit 0
  27. [ -f /etc/local/users.conf ] && . /etc/local/users.conf
  28. # Samba password
  29. if [ -x /usr/bin/pdbedit ]; then
  30. /usr/bin/pdbedit -x -u "$OLDUSERNAME"
  31. elif [ -e /etc/samba/smbpasswd -a -x /usr/bin/smbpasswd ]; then
  32. /usr/bin/smbpasswd -x $OLDUSERNAME || true
  33. fi
  34. #TODO: Netatalk password
  35. # Mailinglists
  36. maildomain="`maildomain`"
  37. if [ -n "$maildomain" ]; then
  38. lists="`listlists "$maildomain"`"
  39. if [ -n "$lists" ]; then
  40. echo "Unsubscribing $OLDUSERNAME@$maildomain from mailinglists..."
  41. fi
  42. for list in $lists; do
  43. delfromlist "$OLDUSERNAME@$maildomain" "$list"
  44. done
  45. fi
  46. # Check for dummy shared files if enabled in /etc/local/users.conf
  47. if [ -n "$DUMMYSHAREDDIR" ]; then
  48. if [ -d $DUMMYSHAREDDIR/$OLDUSERNAME -a -n "$OLDUSERNAME" ]; then
  49. echo -n "It seems this was a dummy user. Remove shared files (y/N)? "
  50. read remove_files
  51. case $remove_files in
  52. y|Y)
  53. rm -rf $DUMMYSHAREDDIR/$OLDUSERNAME
  54. ;;
  55. esac
  56. fi
  57. fi
  58. # Workaround: It seems deluser avoids symlinks when told to remove homedir
  59. if [ "$REMOVE_HOME" = "1" -a -d $OLDHOMEDIR ]; then
  60. echo "Removing $OLDHOMEDIR..."
  61. rm -rf $OLDHOMEDIR
  62. fi