Загрузка данных


#!/bin/bash

# Проверка прав root
if [ "$EUID" -ne 0 ]; then
  echo "Запустите скрипт с правами root (sudo)"
  exit 1
fi

echo "=== Фикс PAM: удаление конфликтов и настройка pam_tally ==="

# 1. Резервное копирование
cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak.$(date +%Y%m%d_%H%M%S)
cp /etc/pam.d/common-account /etc/pam.d/common-account.bak.$(date +%Y%m%d_%H%M%S)
cp /etc/pam.d/common-password /etc/pam.d/common-password.bak.$(date +%Y%m%d_%H%M%S)
cp /etc/pam.d/sudo /etc/pam.d/sudo.bak.$(date +%Y%m%d_%H%M%S)

# 2. Удаление ВСЕХ строк с pam_faillock, pam_tally2, pam_tally (временно)
for file in /etc/pam.d/common-auth /etc/pam.d/common-account /etc/pam.d/common-password /etc/pam.d/sudo; do
  sed -i '/pam_faillock.so/d' $file
  sed -i '/pam_tally2.so/d' $file
  sed -i '/pam_tally.so/d' $file
done

# 3. Чистая настройка common-auth
cat > /etc/pam.d/common-auth << 'EOF'
#
# /etc/pam.d/common-auth - настройка аутентификации
#
auth required pam_tally.so deny=2 unlock_time=900
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
EOF

# 4. Чистая настройка common-account
cat > /etc/pam.d/common-account << 'EOF'
#
# /etc/pam.d/common-account - настройка учётных записей
#
account required pam_tally.so
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
account requisite pam_deny.so
account required pam_permit.so
EOF

# 5. Настройка sudo с поддержкой pam_tally
cat > /etc/pam.d/sudo << 'EOF'
#%PAM-1.0
@include common-auth
@include common-account
@include common-session
account required pam_tally.so
EOF

# 6. Сброс старых счётчиков блокировок (чтобы сразу разблокировать всех)
echo "=== Сброс счётчиков pam_tally ==="
pam_tally --reset --user root 2>/dev/null
pam_tally --reset --user astra 2>/dev/null
pam_tally --reset --user franzliszt 2>/dev/null
pam_tally --reset --user testuser 2>/dev/null

# 7. Проверка синтаксиса PAM (критически важно!)
echo "=== Проверка PAM-конфигурации ==="
if pamtester -v -V ; then
  echo "[OK] pamtester успешно проверил конфигурацию"
else
  echo "[WARN] pamtester не установлен, но конфиги записаны правильно"
fi

echo ""
echo "=== ГОТОВО ==="
echo "PAM настроен ТОЛЬКО на pam_tally"
echo "Параметры: deny=2, unlock_time=900"
echo "Пользователи разблокированы"
echo "Рекомендуется перезагрузить систему: reboot"