linux-auth/README.md
2026-01-14 13:23:43 +03:00

146 lines
No EOL
4.2 KiB
Markdown
Raw Permalink 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.

# Linux Auth — Приложение аутентификации на Linux
Linux Auth — консольное приложение для аутентификации пользователей на Linux (Debian 12) с использованием локальной SQLite базы данных.
Поддерживает:
- Ввод логина и пароля с маской
- Ограничение числа попыток входа
- Сброс формы
- Настраиваемые параметры через TOML
- CLI утилиты для инициализации и добавления пользователей
## Настройка окружения
1. Установить Go, gcc и SQLite dev на Debian 12:
```bash
bash scripts/config.sh
```
- Обновляет репозитории
- Устанавливает Go, GCC, SQLite
- Подготавливает зависимости Go проекта
## Сборка проекта
Скрипт ```build.sh``` собирает все бинарники:
- Основное приложение: authapp
- Инициализация пользователей: init_users
- CLI утилита для добавления пользователей: add_user
```
bash scripts/build.sh
```
- CGO включён для работы с go-sqlite3
- Создаёт release и debug версии (build/release/, build/debug/)
## Инициализация пользователей
Перед первым запуском необходимо создать начальных пользователей:
```
./build/release/init_users
```
- Создаёт пользователей из скрипта (admin, user1)
- Пароли автоматически хешируются через SHA-256
## Добавление новых пользователей
Используйте утилиту ```add_user``` для добавления пользователя без изменения кода:
```
./build/release/add_user -username USER -password PASS
```
Пример:
```
./build/release/add_user -username test -password 1234
```
## Запуск основного приложения
```
bash scripts/run.sh
```
- Запускает authapp с конфигурацией configs/config.toml
- Поддерживает ввод логина и пароля с маской
- Предусмотрена логика ограничения попыток и блокировки пользователя
- Позволяет сбросить форму и повторить попытку
Пример работы:
```
=== AuthApp ===
Логин: admin
Пароль: ******
Доступ разрешён. Добро пожаловать, admin!
```
## Конфигурация (configs/config.toml)
Пример:
```
[app]
name = "AuthApp"
max_login_attempts = 3
lock_timeout_sec = 300
[database]
type = "sqlite"
path = "./data/users.db"
[security]
password_hash = "sha256"
[ui]
show_welcome = true
```
- ```max_login_attempts``` — количество попыток перед блокировкой
- ```lock_timeout_sec``` — время блокировки пользователя (сек)
- ```password_hash``` — алгоритм хеширования пароля
- ```show_welcome``` — вывод приветствия при старте
## Особенности и назначение утилит
```authapp```: Основное приложение для аутентификации пользователей
```init_users```:Создаёт начальных пользователей в базе SQLite (admin, user1)
```add_user```: CLI утилита для добавления новых пользователей без перекомпиляции
## Проверка работы
Собрать проект:
```
bash scripts/build.sh
```
Инициализировать пользователей:
```
./build/release/init_users
```
Запустить приложение:
```
bash scripts/run.sh
```
Протестировать успешный и неуспешный вход
Добавить нового пользователя:
```
./build/release/add_user -username test -password 1234
```