script-user-reset-password 915 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env bash
  2. # Reset a user password on the server
  3. # Copyright 2021-2025 Bryan C. Roessler
  4. # Licensed under the Apache License, Version 2.0
  5. p="${BASH_SOURCE[0]%/*}"; [[ -r $p/script-functions ]] && . "$p"/script-functions || exit 1
  6. is_root
  7. echo "Usage: $0 [username] [password]"
  8. case $# in
  9. 0)
  10. prompt user
  11. prompt password
  12. ;;
  13. 1)
  14. user="$1"
  15. prompt password
  16. ;;
  17. 2)
  18. user="$1"
  19. password="$2"
  20. ;;
  21. *)
  22. echo "Too many arguments provided"
  23. exit 1
  24. ;;
  25. esac
  26. if ! id -u "$user" &>/dev/null; then
  27. echo "User $user does not exist"
  28. exit 1
  29. fi
  30. if ask_ok "Change user $user's password to $password?"; then
  31. echo "$user:$password" | chpasswd
  32. (echo "$password"; echo "$password") | smbpasswd -a -s "$user"
  33. fi
  34. ask_ok "Prompt user to reset password on next login?" &&
  35. passwd --expire "$user" &&
  36. echo "NOTE: The file sharing (smbpasswd) will not be changed"
  37. exit 0