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