118 lines
5.6 KiB
Bash
118 lines
5.6 KiB
Bash
#!/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"
|