net/zadanie2/hq-cli.sh

118 lines
5.6 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
# ============================================================
# ЗАДАНИЕ 2. Настройка HQ-CLI (Linux / РЕД ОС 8)
# 1. Ввод в домен — ДЕЛАЕТСЯ ВРУЧНУЮ (нужен пароль админа, MANUAL.md)
# 3. Автомонтирование NFS (/mnt/nfs через autofs)
# 4. chrony-клиент (сервер ISP)
# 1 (п.1). Sudo для группы hq: только cat, grep, id
# 9. Яндекс Браузер — попытка через dnf, иначе вручную (MANUAL.md)
# ============================================================
# --- Проверка прав root ---
if [[ $EUID -ne 0 ]]; then
echo "Запустите скрипт с правами root (sudo bash hq-cli.sh)"
exit 1
fi
# ================= ПЕРЕМЕННЫЕ (заполните перед запуском) =================
EXAM_TZ="Europe/Moscow" # проверить на экзамене
DOMAN="au-team.irpo"
# --- 3. NFS (автомонтирование в /mnt/nfs) ---
NFS_SERVER="" # адрес HQ-SRV (без префикса)
AUTO_MASTER="/etc/auto.master"
AUTO_FILE="/etc/auto.nfs"
AUTOFS_PACKAGE="autofs" # ПРОВЕРИТЬ: пакет autofs на РЕД ОС 8
AUTOFS_SERVICE="autofs"
# --- 4. chrony-клиент ---
CHRONY_CONF="/etc/chrony.conf" # ПРОВЕРИТЬ путь конфига chrony
CHRONY_PACKAGE="chrony"
CHRONY_SERVICE="chronyd"
NTP_SERVER="" # адрес ISP (без префикса)
# --- 1 (п.1). Sudo для доменной группы hq: только cat, grep, id ---
HQ_GROUP_NAME="hq"
SUDO_COMMANDS="/usr/bin/cat, /usr/bin/grep, /usr/bin/id"
SUDO_FILE="/etc/sudoers.d/hq_group"
# --- 9. Яндекс Браузер ---
BROWSER_PACKAGE="yandex-browser" # ПРОВЕРИТЬ: имя пакета и наличие в репозитории РЕД ОС 8
# ============ Проверка заполнения переменных ============
MISSING=()
for NAME in NFS_SERVER NTP_SERVER EXAM_TZ; do
[[ -z "${!NAME}" ]] && MISSING+=("$NAME")
done
if [[ ${#MISSING[@]} -gt 0 ]]; then
echo "Заполните переменные в начале скрипта: ${MISSING[*]}"
exit 1
fi
echo "=== Настройка HQ-CLI, задание 2 ==="
# --- 1. Ввод в домен — вручную ---
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: ввод в домен $DOMAN (пароль администратора запрашивается)"
echo " Пошаговая инструкция: MANUAL.md, раздел 'HQ-CLI: ввод в домен samba-DC'"
# --- 3. Автомонтирование NFS через autofs ---
echo "--- autofs (/mnt/nfs) ---"
dnf install -y "$AUTOFS_PACKAGE" || echo "ПРОВЕРИТЬ: пакет $AUTOFS_PACKAGE не установился"
if ! grep -qE "^[[:space:]]*/mnt[[:space:]]+$AUTO_FILE" "$AUTO_MASTER" 2>/dev/null; then
echo "/mnt $AUTO_FILE" >> "$AUTO_MASTER"
echo "auto.master: добавлена строка /mnt $AUTO_FILE"
fi
# Файл перезаписывается целиком — дублей нет
cat > "$AUTO_FILE" <<EOF
nfs -rw $NFS_SERVER:/raid/nfs
EOF
chmod 644 "$AUTO_FILE"
systemctl enable --now "$AUTOFS_SERVICE" \
|| { echo "ПРОВЕРИТЬ: служба $AUTOFS_SERVICE не запустилась"; systemctl status "$AUTOFS_SERVICE" --no-pager; }
# --- 4. chrony-клиент ---
echo "--- chrony-клиент ($NTP_SERVER) ---"
dnf install -y "$CHRONY_PACKAGE" || echo "ПРОВЕРИТЬ: пакет $CHRONY_PACKAGE не установился"
if ! grep -qE "^server[[:space:]]+$NTP_SERVER\\b" "$CHRONY_CONF" 2>/dev/null; then
sed -i "1i server $NTP_SERVER iburst" "$CHRONY_CONF"
echo "Добавлено: server $NTP_SERVER iburst"
fi
systemctl enable --now "$CHRONY_SERVICE" \
|| { echo "ПРОВЕРИТЬ: служба $CHRONY_SERVICE не запустилась"; systemctl status "$CHRONY_SERVICE" --no-pager; }
# --- 1 (п.1). Sudo для группы hq: только cat, grep, id ---
echo "--- sudo для группы $HQ_GROUP_NAME ---"
# Файл перезаписывается целиком — дублей нет
# ПРОВЕРИТЬ формат имени группы после ввода в домен:
# getent group hq
# если имя группы с суффиксом домена — заменить строку ниже на %hq@$DOMAN
cat > "$SUDO_FILE" <<EOF
%$HQ_GROUP_NAME ALL=(ALL) NOPASSWD: $SUDO_COMMANDS
EOF
chmod 440 "$SUDO_FILE"
echo "Файл $SUDO_FILE записан: группа может повышать привилегии только для cat/grep/id"
# --- 9. Яндекс Браузер (попытка через dnf; иначе вручную) ---
echo "--- Яндекс Браузер ---"
if dnf install -y "$BROWSER_PACKAGE" 2>/dev/null; then
echo "Браузер установлен"
else
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: пакет $BROWSER_PACKAGE не нашёлся в репозитории."
echo " Возьмите rpm из Additional.iso / локального источника и установите:"
echo " dnf localinstall /путь/к/пакету.rpm (шаг отметить в отчёте)"
fi
# --- Часовой пояс ---
timedatectl set-timezone "$EXAM_TZ"
echo ""
echo "=== Самопроверка на HQ-CLI ==="
echo "NFS: cd /mnt/nfs && df -h ."
echo "NTP:"
chronyc sources 2>/dev/null
echo ""
echo "Дополнительные проверки вручную:"
echo " sudo -l (после ввода в домен: только cat/grep/id?)"
echo " chronyc tracking (источник = адрес ISP)"
echo " dnf list installed | grep -i yandex"