Add new file

This commit is contained in:
parent fca0cbb8b3
commit 2e165fc774

99
script.sh Normal file
View file

@ -0,0 +1,99 @@
#!/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 "--- Готово ---"