Удалить server/create-user.sh
This commit is contained in:
@@ -1,98 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
DEFAULT_USER="user"
|
|
||||||
PASS_LEN=15
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
cat <<'EOF'
|
|
||||||
Usage:
|
|
||||||
create-user.sh [--user <username>] [--password <password>]
|
|
||||||
|
|
||||||
If --password is omitted, a random 15-char password is generated.
|
|
||||||
User is added to sudo (Debian/Ubuntu) or wheel (RHEL-like) group if present.
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
USERNAME=""
|
|
||||||
PASSWORD=""
|
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
case "$1" in
|
|
||||||
--user)
|
|
||||||
[[ $# -ge 2 ]] || { echo "Missing value for --user" >&2; usage; exit 2; }
|
|
||||||
USERNAME="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--password)
|
|
||||||
[[ $# -ge 2 ]] || { echo "Missing value for --password" >&2; usage; exit 2; }
|
|
||||||
PASSWORD="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-h|--help)
|
|
||||||
usage
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unknown argument: $1" >&2
|
|
||||||
usage
|
|
||||||
exit 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# defaults
|
|
||||||
if [[ -z "${USERNAME}" ]]; then
|
|
||||||
USERNAME="${DEFAULT_USER}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# root only
|
|
||||||
if [[ "${EUID}" -ne 0 ]]; then
|
|
||||||
echo "Run as root (sudo)." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# basic validation
|
|
||||||
if [[ "${USERNAME}" =~ [^a-zA-Z0-9._-] ]]; then
|
|
||||||
echo "Invalid username '${USERNAME}'. Allowed: letters, digits, dot, underscore, dash." >&2
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# generate password if not provided
|
|
||||||
if [[ -z "${PASSWORD}" ]]; then
|
|
||||||
PASSWORD="$(tr -dc 'A-Za-z0-9!@#$%^&*()_+=-[]{}.,?/<>~' </dev/urandom | head -c "${PASS_LEN}")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# create user if not exists
|
|
||||||
if id "${USERNAME}" &>/dev/null; then
|
|
||||||
echo "User '${USERNAME}' already exists."
|
|
||||||
else
|
|
||||||
useradd -m -s /bin/bash "${USERNAME}"
|
|
||||||
echo "User '${USERNAME}' created."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set password
|
|
||||||
echo "${USERNAME}:${PASSWORD}" | chpasswd
|
|
||||||
|
|
||||||
# Optional: force password change at first login (comment out if не нужно)
|
|
||||||
chage -d 0 "${USERNAME}" 2>/dev/null || true
|
|
||||||
|
|
||||||
# add to admin group (sudo/wheel)
|
|
||||||
if getent group sudo >/dev/null; then
|
|
||||||
usermod -aG sudo "${USERNAME}"
|
|
||||||
ADMIN_GROUP="sudo"
|
|
||||||
elif getent group wheel >/dev/null; then
|
|
||||||
usermod -aG wheel "${USERNAME}"
|
|
||||||
ADMIN_GROUP="wheel"
|
|
||||||
else
|
|
||||||
ADMIN_GROUP=""
|
|
||||||
echo "No sudo/wheel group found; user not added to admin group." >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "=== Result ==="
|
|
||||||
echo "username: ${USERNAME}"
|
|
||||||
echo "password: ${PASSWORD}"
|
|
||||||
if [[ -n "${ADMIN_GROUP}" ]]; then
|
|
||||||
echo "added to group: ${ADMIN_GROUP}"
|
|
||||||
fi
|
|
||||||
Reference in New Issue
Block a user