#!/bin/bash

# Скрипт для создания пользователя upgrade, настройки sudo без пароля,
# добавления SSH-ключа и разрешения входа в SSH для этого пользователя

set -e  # Прерывать выполнение при ошибке

# Переменные
USERNAME="upgrade"
SSH_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZfthKbdHixWIjTuuqWW1ct65HP78eItYULaaR+9blhjbTP8reO3JYJCzFG0Q0cVJbmm/3K1gM9iXwQ34JWtCoyObmu9r8Dy5i9ULiDilEzjZND84jvBCTVsah27M21eMWRmrxHC7SlGoO5yNWPCrjoSwrKEg0c2Tuol+tZk7OeFeDhryFoj8UJHMF9JASXcaYW7kZoI1Qt0VD5W8v9X1eB7ItTGKBxUfc129m6Y0SjgKQugh5l4AAP/o9+p34OffToK9/SZJpW+4IwAUNTXsUhS0dWdFLhywUkYQr+8ljmkoneerzzs9bRpw7aXN6vt37kWjEettMjEVK9xubRNDhpanJf02K5cO4XJfP9V+6gx6iN8K0b/0pi77XkTmsbPqottmma+yL3Ks/Uc44/T3ZyjZhIqr83vRyUJych18pfjQLZc86i+kveE9OYXCr5eFP1bVELU2bSCSxJl9kub/G3t9oPq09nt3Q6tCzN0GOQVvNN1zEQcw0hstao0uDfllJfzi/UXGT/DSotKLcJivI0wm7r9Y7+id6mYfnSP8PN0kAHkf/YfMPlAwy8nnmDOeTg65/aGfH6aKp912SKwvP3H+AK8XLZgxWFt8q3spyu4yWa1tlLrbzRRbBzLXldByn8ToUJ4EHiS03yEWfshVBsGnYS0QxLtmNTijuOSNDFw== RSA 4096 bit Keys"

# 1. Создание пользователя
if id "$USERNAME" &>/dev/null; then
    echo "Пользователь $USERNAME уже существует, пропускаем создание."
else
    useradd -m -s /bin/bash "$USERNAME"
    echo "Пользователь $USERNAME создан."
fi

# 2. Добавление в группу sudo
usermod -aG sudo "$USERNAME"
echo "Пользователь $USERNAME добавлен в группу sudo."

# 3. Разрешение sudo без пароля
SUDOERS_FILE="/etc/sudoers.d/$USERNAME-nopasswd"
echo "$USERNAME ALL=(ALL) NOPASSWD: ALL" > "$SUDOERS_FILE"
chmod 440 "$SUDOERS_FILE"
echo "Для пользователя $USERNAME настроен sudo без пароля."

# 4. Создание .ssh директории и добавление SSH-ключа
HOME_DIR=$(eval echo ~$USERNAME)
SSH_DIR="$HOME_DIR/.ssh"
AUTH_KEYS="$SSH_DIR/authorized_keys"

mkdir -p "$SSH_DIR"
echo "$SSH_KEY" >> "$AUTH_KEYS"
chmod 700 "$SSH_DIR"
chmod 600 "$AUTH_KEYS"
chown -R "$USERNAME":"$USERNAME" "$SSH_DIR"
echo "SSH-ключ добавлен для пользователя $USERNAME."

# 5. Разрешение входа для пользователя в sshd_config
SSHD_CONFIG="/etc/ssh/sshd_config"
if grep -q "^AllowUsers" "$SSHD_CONFIG"; then
    if ! grep -q "^AllowUsers.*$USERNAME" "$SSHD_CONFIG"; then
        sed -i "s/^AllowUsers/AllowUsers $USERNAME /" "$SSHD_CONFIG"
    fi
else
    echo "AllowUsers $USERNAME" >> "$SSHD_CONFIG"
fi
echo "Пользователь $USERNAME добавлен в AllowUsers в sshd_config."

# 6. Перезапуск SSH-сервиса
systemctl restart sshd || service ssh restart || service sshd restart
echo "SSH-сервис перезапущен."

echo "Готово! Пользователь $USERNAME создан, настроен sudo без пароля, SSH-ключ добавлен, вход разрешён."
