net/script.sh

99 lines
4.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "--- Готово ---"