#!/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 "=== Скрипт завершен ==="