Удалить 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