Add new file
This commit is contained in:
parent
fca0cbb8b3
commit
2e165fc774
99
script.sh
Normal file
99
script.sh
Normal 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 "--- Готово ---"
|
||||
Loading…
Reference in a new issue