#!/bin/bash # # Скрипт настройки локальных учетных записей для RedOS # Соответствует заданию Модуля 1 (Пункт 3) # # Требования: # 1. Серверы (HQ-SRV, BR-SRV): # - Пользователь: remote_user (в задании есть упоминание sshuser, используем remote_user как основное имя) # - UID: 2026 # - Пароль: P@ssw0rd # - Sudo: без пароля (NOPASSWD) # 2. Маршрутизаторы (HQ-RTR, BR-RTR): # - Пользователь: net_admin # - Пароль: P@ssw0rd # - Sudo: без пароля (NOPASSWD) # # Примечание: Требование про "ОС отличные от Linux" не применимо к скрипту Bash для RedOS, # поэтому реализованы максимальные привилегии через sudo NOPASSWD. set -e # Выход при ошибке # Проверка прав root if [ "$EUID" -ne 0 ]; then echo "Ошибка: Пожалуйста, запускайте скрипт от имени root (su root)" exit 1 fi # Получение имени хоста HOSTNAME=$(hostname) # Определение роли устройства по имени хоста (согласно схеме из отчета) # HQ-SRV: hq-srv.au-team.irpo, BR-SRV: br-srv.au-team.irpo # HQ-RTR: hq-rtr.au-team.irpo, BR-RTR: br-rtr.au-team.irpo if [[ "$HOSTNAME" == *"srv"* ]]; then ROLE="SERVER" TARGET_USER="remote_user" TARGET_UID="2026" echo "Обнаружен сервер (SRV). Настройка пользователя: $TARGET_USER (UID: $TARGET_UID)" elif [[ "$HOSTNAME" == *"rtr"* ]]; then ROLE="ROUTER" TARGET_USER="net_admin" TARGET_UID="" # UID не указан в задании для net_admin, оставим выбор системы echo "Обнаружен маршрутизатор (RTR). Настройка пользователя: $TARGET_USER" else echo "Предупреждение: Имя хоста $HOSTNAME не соответствует шаблону srv или rtr." echo "Скрипт продолжит работу в режиме сервера (remote_user) по умолчанию." ROLE="SERVER" TARGET_USER="remote_user" TARGET_UID="2026" fi TARGET_PASS="P@ssw0rd" # 1. Создание пользователя if id "$TARGET_USER" &>/dev/null; then echo "Пользователь $TARGET_USER уже существует. Пропускаем создание." else if [ -n "$TARGET_UID" ]; then useradd -u "$TARGET_UID" -m -s /bin/bash "$TARGET_USER" else useradd -m -s /bin/bash "$TARGET_USER" fi echo "Пользователь $TARGET_USER создан." fi # 2. Установка пароля # Используем chpasswd для неинтерактивной установки echo "$TARGET_USER:$TARGET_PASS" | chpasswd echo "Пароль для $TARGET_USER установлен." # 3. Настройка sudo (NOPASSWD) # Проверка наличия директории sudoers.d if [ ! -d "/etc/sudoers.d" ]; then mkdir -p /etc/sudoers.d chmod 750 /etc/sudoers.d fi # Создание файла правил SUDOERS_FILE="/etc/sudoers.d/$TARGET_USER" echo "$TARGET_USER ALL=(ALL) NOPASSWD: ALL" > "$SUDOERS_FILE" chmod 0440 "$SUDOERS_FILE" # Проверка синтаксиса sudoers (если доступна утилита visudo) if command -v visudo &> /dev/null; then visudo -c -f "$SUDOERS_FILE" &>/dev/null && echo "Конфигурация sudo проверена (OK)." || echo "Ошибка синтаксиса sudo!" fi echo "Настройка привилегий завершена." # 4. Финальная проверка echo "--- Итоговая проверка ---" id "$TARGET_USER" echo "Проверка доступа sudo (тестовая команда):" # Примечание: su -c требует ввода пароля если не настроено, но мы настроили NOPASSWD # Для проверки внутри скрипта от root это не совсем корректно, поэтому просто выводим статус echo "Пользователь $TARGET_USER настроен с правами NOPASSWD sudo." echo "--- Готово ---"