Skip to content

Instantly share code, notes, and snippets.

@lottspot
Created January 14, 2013 02:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lottspot/4527270 to your computer and use it in GitHub Desktop.
Save lottspot/4527270 to your computer and use it in GitHub Desktop.
Script to create and add users to a .htauth file using SSHA encruption
#!/bin/bash
# DEPENDENCIES: openssl
AUTHFILE_NAME='.htpasswd'
AUTHFILE_DIR='/etc/nginx'
[[ $(id -u) -gt 0 ]] && this script must be run as root && exit 1
echo -n "Enter users to add to .htpasswd file (separated by space, return to exit): "
read USERS
[[ ${#USERS} -lt 1 ]] && exit 0
# Following two lines declare currently unused associative arrays
declare -A PASSWD
declare -A COMMENT
# End unused lines
for user in ${USERS[*]}; do
21VALID=false
while [[ ${VALID} == false ]]; do
echo -n "Enter password for ${user}: "
read -s USRPASS
echo
echo -n "Confirm password for ${user}: "
read -s CONFIRM
echo
VALID=true
[[ ${#USRPASS} -lt 1 && ${#CONFIRM} -lt 1 ]] && echo "No password entered. Please choose a password." && VALID=false
[[ ${USRPASS} != ${CONFIRM} ]] && echo "Passwords did not match." && VALID=false
done
echo -n "Enter comments for ${user}: "
read USRCOMMENT
SALT=$(openssl rand -base64 3)
SHA1=$(printf "${USRPASS}${SALT}" | openssl dgst -binary -sha1 | sed 's#$#'"${SALT}"'#' | base64)
echo "${user}:{SSHA}${SHA1}:${USRCOMMENT}" >> ${AUTHFILE_DIR}/${AUTHFILE_NAME}
echo "Added user ${user} to ${AUTHFILE_NAME}"
done
chown root:nobody ${AUTHFILE_DIR}/${AUTHFILE_NAME}
chmod 644 ${AUTHFILE_DIR}/${AUTHFILE_NAME}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment