diff --git a/script user acc b/script user acc new file mode 100644 index 0000000..159b257 --- /dev/null +++ b/script user acc @@ -0,0 +1,121 @@ +#!/bin/bash + +# Скрипт для создания локальных пользователей на серверах и маршрутизаторах + +set -e # Завершить выполнение при ошибке + +echo "=== Скрипт создания локальных пользователей ===" + +# Проверка запуска от root +if [[ $EUID -ne 0 ]]; then + echo "Ошибка: Этот скрипт должен быть запущен от пользователя root." >&2 + exit 1 +fi + +# --- Аргументы скрипта --- +# Ожидается тип устройства: "server" или "router" +DEVICE_TYPE="$1" + +if [[ "$DEVICE_TYPE" != "server" ]] && [[ "$DEVICE_TYPE" != "router" ]]; then + echo "Использование: $0 " + echo " server: Создает пользователя sshuser для серверов (HQ-SRV, BR-SRV)" + echo " router: Создает пользователя net_admin для маршрутизаторов (HQ-RTR, BR-RTR)" + exit 1 +fi + +# --- Настройки для серверов --- +if [[ "$DEVICE_TYPE" == "server" ]]; then + USER_NAME="sshuser" + USER_ID="1010" + PASSWORD="P@ssw0rd" # ВНИМАНИЕ: Хранить пароль в открытом виде небезопасно! + SUDO_RULE="sshuser ALL=(ALL)NOPASSWD: ALL" + echo "Настройка для типа устройства: SERVER (создание $USER_NAME)" + + # Проверка, существует ли пользователь + if id "$USER_NAME" &>/dev/null; then + echo "Пользователь $USER_NAME уже существует." + read -p "Вы хотите пересоздать его? (y/N): " -n 1 -r RECREATE_USER + echo + if [[ $RECREATE_USER =~ ^[Yy]$ ]]; then + echo "Удаление существующего пользователя $USER_NAME..." + userdel -r "$USER_NAME" # Удалить пользователя и домашнюю директорию + else + echo "Пропуск создания пользователя $USER_NAME." + fi + fi + + # Создание пользователя, если он не существует или был удален + if ! id "$USER_NAME" &>/dev/null; then + echo "Создание пользователя $USER_NAME с UID $USER_ID..." useradd -u "$USER_ID" "$USER_NAME" + echo "Пользователь $USER_NAME создан." + fi + + # Установка пароля + echo "Установка пароля для $USER_NAME..." + echo "$USER_NAME:$PASSWORD" | chpasswd + echo "Пароль установлен." + + # Добавление права sudo без пароля + SUDOERS_FILE="/etc/sudoers.d/user-$USER_NAME-permissions" # Лучше создать отдельный файл + echo "Добавление разрешений sudo для $USER_NAME в $SUDOERS_FILE..." + # Проверяем, существует ли уже правило в основном файле или в подкаталоге + if grep -Fxq "$SUDO_RULE" /etc/sudoers || [[ -f "$SUDOERS_FILE" ]] && grep -Fxq "$SUDO_RULE" "$SUDOERS_FILE"; then + echo "Правило sudo для $USER_NAME уже существует." + else + # echo "$SUDO_RULE" >> /etc/sudoers # Не рекомендуется редактировать /etc/sudoers напрямую + echo "$SUDO_RULE" > "$SUDOERS_FILE" + chmod 440 "$SUDOERS_FILE" # Устанавливаем безопасные права доступа + echo "Разрешения sudo добавлены в $SUDOERS_FILE." + fi + + echo "Настройка для сервера завершена." +fi + +# --- Настройки для маршрутизаторов --- +if [[ "$DEVICE_TYPE" == "router" ]]; then + USER_NAME="net_admin" + # USER_ID не указан в инструкции для маршрутизаторов, поэтому не используем + PASSWORD="P@$$w0rd" # ВНИМАНИЕ: Хранить пароль в открытом виде небезопасно! + SUDO_RULE="net_admin ALL=(ALL)NOPASSWD: ALL" + echo "Настройка для типа устройства: ROUTER (создание $USER_NAME)" + + # Проверка, существует ли пользователь + if id "$USER_NAME" &>/dev/null; then + echo "Пользователь $USER_NAME уже существует." + read -p "Вы хотите пересоздать его? (y/N): " -n 1 -r RECREATE_USER + echo + if [[ $RECREATE_USER =~ ^[Yy]$ ]]; then + echo "Удаление существующего пользователя $USER_NAME..." + userdel -r "$USER_NAME" + else + echo "Пропуск создания пользователя $USER_NAME." + fi + fi + + # Создание пользователя, если он не существует или был удален + if ! id "$USER_NAME" &>/dev/null; then + echo "Создание пользователя $USER_NAME..." + useradd "$USER_NAME" # Не указываем UID echo "Пользователь $USER_NAME создан." + fi +# Установка пароля + echo "Установка пароля для $USER_NAME..." + echo "$USER_NAME:$PASSWORD" | chpasswd + echo "Пароль установлен." + + # Добавление права sudo без пароля + SUDOERS_FILE="/etc/sudoers.d/user-$USER_NAME-permissions" # Лучше создать отдельный файл + echo "Добавление разрешений sudo для $USER_NAME в $SUDOERS_FILE..." + # Проверяем, существует ли уже правило + if grep -Fxq "$SUDO_RULE" /etc/sudoers || [[ -f "$SUDOERS_FILE" ]] && grep -Fxq "$SUDO_RULE" "$SUDOERS_FILE"; then + echo "Правило sudo для $USER_NAME уже существует." + else + # echo "$SUDO_RULE" >> /etc/sudoers # Не рекомендуется редактировать /etc/sudoers напрямую + echo "$SUDO_RULE" > "$SUDOERS_FILE" + chmod 440 "$SUDOERS_FILE" + echo "Разрешения sudo добавлены в $SUDOERS_FILE." + fi + + echo "Настройка для маршрутизатора завершена." +fi + +echo "=== Скрипт завершен ===" \ No newline at end of file