Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #/bin/bash
- #
- # This script is used to Create a User Account with SUDO Privileges!!!,
- # Display the Password and force the User to change that Password upon the first Login!
- #
- # Version: 1.0
- # Author: ham5ter@ham5ter.de
- # Date: 02.08.2016
- main(){
- # Default values. These Values can be overwritten with Comandline Arguments
- FORCE_PASSWORD_CHANGE=true
- ADD_TO_SUDO_GROUP=true
- # Parse arguments
- parse_arguments $@
- # Add the User
- if id -u "$1" >/dev/null 2>&1; then
- echo "Error: The User \"$USERNAME\" already exists!"
- exit 1
- else
- adduser --disabled-password --gecos "" $USERNAME
- fi
- # Add the User to the SUDO Group
- if [ "$ADD_TO_SUDO_GROUP" = true ] ; then
- usermod -aG sudo $USERNAME
- fi
- # Set the Password
- if [ "$USE_PASSWORD" = true ] ; then
- PASSWORD_OF_THE_NEW_USER=$PROVIDED_PASSWORD
- else
- PASSWORD_OF_THE_NEW_USER=$(genpasswd)
- fi
- # Force Password Change on Login!
- echo $USERNAME:$PASSWORD_OF_THE_NEW_USER | chpasswd
- if [ "$FORCE_PASSWORD_CHANGE" = true ] ; then
- chage -d 0 $1
- fi
- # Display Informations
- echo ""
- echo "###"
- echo "# The Password for the Account \"$USERNAME\" is: \"$PASSWORD_OF_THE_NEW_USER\""
- echo "###"
- }
- genpasswd() {
- local l=$1
- [ "$l" == "" ] && l=16
- tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
- }
- usage() {
- cat 1>&2 <<EOF
- Usage $(basename $0) USERNAME [OPTIONS]
- This script is used to Create a User Account with SUDO Privileges.
- -v|--verbose Make the Script verbose.
- -h|--help Print this help message.
- -p|--password <p> Set the Password of the new user to <p>.
- -n|--no-reset Dont ask the user to change his Password.
- -s|--no-sudo Dont add the user to the sudo Group.
- EOF
- }
- parse_arguments(){
- if [ $# -eq 0 ]; then
- echo "Error: Missing Argument"
- usage
- exit 1
- fi
- PARAMS=""
- while (( "$#" )); do
- case "$1" in
- -v|--verbose)
- set -e
- set -x
- shift 1
- ;;
- -h|--help)
- usage
- exit 0
- ;;
- -n|--no-reset)
- FORCE_PASSWORD_CHANGE=false
- shift 1
- ;;
- -s|--no-sudo)
- ADD_TO_SUDO_GROUP=false
- shift 1
- ;;
- -p|--password)
- PROVIDED_PASSWORD=$2
- USE_PASSWORD=true
- shift 2
- ;;
- --) # end Argument parsing
- shift
- break
- ;;
- -*|--*=) # unsupported Argument
- echo "Error: Unsupported Argument '$1'" >&2
- usage
- exit 1
- ;;
- *) # preserve positional Arguments
- USERNAME="$PARAMS$1"
- shift
- ;;
- esac
- done
- }
- main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement