From 5cbf5e8c53ea87192e1175d922de315edf32c410 Mon Sep 17 00:00:00 2001 From: Danil Khamitov Date: Thu, 5 Mar 2026 08:26:09 +0000 Subject: [PATCH] Edit script.sh --- script.sh | 104 +++++------------------------------------------------- 1 file changed, 9 insertions(+), 95 deletions(-) diff --git a/script.sh b/script.sh index caa93ca..600b9d1 100644 --- a/script.sh +++ b/script.sh @@ -1,99 +1,13 @@ #!/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. +# Настройка часового пояса Екатеринбурга +# sudo ./tz.sh -set -e # Выход при ошибке +[[ $EUID -ne 0 ]] && { echo "Запустите с sudo"; exit 1; } +[[ "$(hostname)" =~ [Ss]witch ]] && { echo "Коммутатор - пропуск"; exit 0; } -# Проверка прав root -if [ "$EUID" -ne 0 ]; then - echo "Ошибка: Пожалуйста, запускайте скрипт от имени root (su root)" - exit 1 -fi +timedatectl set-timezone Asia/Yekaterinburg +timedatectl set-ntp true +chronyc -a makestep &>/dev/null -# Получение имени хоста -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 "--- Готово ---" \ No newline at end of file +echo "Часовой пояс установлен: $(timedatectl | grep "Time zone")" +echo "Текущее время: $(date)" \ No newline at end of file