Edit script.sh
This commit is contained in:
parent
2e165fc774
commit
5cbf5e8c53
104
script.sh
104
script.sh
|
|
@ -1,99 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
# Настройка часового пояса Екатеринбурга
|
||||||
# Скрипт настройки локальных учетных записей для RedOS
|
# sudo ./tz.sh
|
||||||
# Соответствует заданию Модуля 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 # Выход при ошибке
|
[[ $EUID -ne 0 ]] && { echo "Запустите с sudo"; exit 1; }
|
||||||
|
[[ "$(hostname)" =~ [Ss]witch ]] && { echo "Коммутатор - пропуск"; exit 0; }
|
||||||
|
|
||||||
# Проверка прав root
|
timedatectl set-timezone Asia/Yekaterinburg
|
||||||
if [ "$EUID" -ne 0 ]; then
|
timedatectl set-ntp true
|
||||||
echo "Ошибка: Пожалуйста, запускайте скрипт от имени root (su root)"
|
chronyc -a makestep &>/dev/null
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Получение имени хоста
|
echo "Часовой пояс установлен: $(timedatectl | grep "Time zone")"
|
||||||
HOSTNAME=$(hostname)
|
echo "Текущее время: $(date)"
|
||||||
|
|
||||||
# Определение роли устройства по имени хоста (согласно схеме из отчета)
|
|
||||||
# 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