Добавлен скрипт проверки авторизации Cockpit
Этот коммит содержится в:
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Virtuality Cockpit auth helper
|
||||
# Checks Linux user password state and required groups for Cockpit/libvirt access.
|
||||
|
||||
USER_NAME="${1:-${VIRTUALITY_USER:-${SUDO_USER:-root}}}"
|
||||
|
||||
ESC="\033"
|
||||
RESET="${ESC}[0m"
|
||||
BOLD="${ESC}[1m"
|
||||
GREEN="${ESC}[32m"
|
||||
YELLOW="${ESC}[33m"
|
||||
RED="${ESC}[31m"
|
||||
CYAN="${ESC}[36m"
|
||||
GRAY="${ESC}[90m"
|
||||
|
||||
ok() { echo -e "${GREEN}✓${RESET} $*"; }
|
||||
warn() { echo -e "${YELLOW}!${RESET} $*"; }
|
||||
fail() { echo -e "${RED}✗${RESET} $*"; exit 1; }
|
||||
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
fail "Запусти от root: sudo bash scripts/fix_cockpit_auth.sh [user]"
|
||||
fi
|
||||
|
||||
clear 2>/dev/null || true
|
||||
cat <<EOF
|
||||
${CYAN}${BOLD}Virtuality Cockpit auth check${RESET}
|
||||
${GRAY}User:${RESET} ${USER_NAME}
|
||||
EOF
|
||||
|
||||
echo
|
||||
|
||||
if ! id "$USER_NAME" >/dev/null 2>&1; then
|
||||
fail "Пользователь ${USER_NAME} не найден"
|
||||
fi
|
||||
ok "Пользователь найден: ${USER_NAME}"
|
||||
|
||||
HASH="$(getent shadow "$USER_NAME" | cut -d: -f2 || true)"
|
||||
if [[ -z "$HASH" || "$HASH" == "!" || "$HASH" == "*" || "$HASH" == "!!" ]]; then
|
||||
warn "У пользователя ${USER_NAME} пароль не задан или заблокирован"
|
||||
echo
|
||||
echo -e "${BOLD}Для входа в Cockpit задай пароль:${RESET}"
|
||||
if [[ "$USER_NAME" == "root" ]]; then
|
||||
echo " passwd root"
|
||||
else
|
||||
echo " sudo passwd ${USER_NAME}"
|
||||
fi
|
||||
else
|
||||
ok "У пользователя ${USER_NAME} есть пароль"
|
||||
fi
|
||||
|
||||
if [[ "$USER_NAME" != "root" ]]; then
|
||||
usermod -aG sudo "$USER_NAME" || true
|
||||
usermod -aG libvirt "$USER_NAME" || true
|
||||
usermod -aG kvm "$USER_NAME" || true
|
||||
ok "Пользователь ${USER_NAME} добавлен в группы sudo/libvirt/kvm"
|
||||
warn "Для применения групп нужно выйти из SSH и войти снова"
|
||||
else
|
||||
ok "root не требует добавления в группы"
|
||||
fi
|
||||
|
||||
systemctl enable --now cockpit.socket >/dev/null 2>&1 || fail "Не удалось запустить cockpit.socket"
|
||||
ok "cockpit.socket включён и запущен"
|
||||
|
||||
if command -v ufw >/dev/null 2>&1; then
|
||||
ufw allow 9090/tcp >/dev/null 2>&1 || true
|
||||
ok "UFW правило 9090/tcp добавлено/проверено"
|
||||
fi
|
||||
|
||||
systemctl restart cockpit.socket >/dev/null 2>&1 || true
|
||||
ok "cockpit.socket перезапущен"
|
||||
|
||||
SERVER_IP="$(hostname -I | awk '{print $1}')"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN}${BOLD}Готово.${RESET}"
|
||||
echo -e "${BOLD}Cockpit:${RESET} https://${SERVER_IP}:9090"
|
||||
echo -e "${BOLD}Login:${RESET} ${USER_NAME}"
|
||||
echo -e "${BOLD}Password:${RESET} пароль Linux-пользователя ${USER_NAME}"
|
||||
echo
|
||||
Ссылка в новой задаче
Block a user