Настройка ProFTPD с использованием MySQL/MariaDB для хранения учетных данных

ProFTPD — это популярный FTP-сервер для Unix-подобных операционных систем, который предлагает гибкую настройку и высокую производительность. Однако, при использовании ProFTPD часто возникает необходимость в централизованном управлении учетными записями пользователей. Для этого можно использовать базу данных MySQL или MariaDB.

В этой статье мы рассмотрим процесс настройки ProFTPD для работы с базой данных MySQL/MariaDB для хранения учетных данных пользователей.

Установка и настройка ProFTPD
Прежде чем начать, убедитесь, что у вас установлены и настроены следующие компоненты:

— Сервер базы данных MySQL/MariaDB
— Сервер ProFTPD

Создание базы данных и таблицы
Для начала создадим базу данных и таблицу, где будут храниться учетные данные пользователей:
CREATE DATABASE ftp_users;
USE ftp_users;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(64) NOT NULL,
    password VARCHAR(64) NOT NULL,
    dir VARCHAR(255) NOT NULL DEFAULT '/'
);

Настройка ProFTPD
Теперь перейдем к настройке конфигурационного файла ProFTPD. Откройте файл "/etc/proftpd/proftpd.conf" для редактирования:
# ... другие настройки ...

<IfModule mod_sql.c>
    SQLBackend     mysql
    SQLDatabase    ftp_users
    SQLUser        proftpd
    SQLPassword    your_password
    SQLConnectInfo your_host:your_port@your_database
    SQLAuthTypes   AuthUserFile, AuthPAM, AuthMySQL
</IfModule>

# ... другие настройки ...

Замените «your_host», «your_port», «your_database», «your_password» на соответствующие значения вашего сервера базы данных.

Загрузка учетных данных в базу данных
Перед тем как пользователи смогут подключиться к FTP-серверу, необходимо загрузить их учетные данные в базу данных. Это можно сделать вручную или с помощью скрипта. Ниже приведен пример PHP-скрипта для добавления учетной записи пользователя:
<?php
// Параметры подключения к базе данных
$host = 'your_host';
$dbname = 'ftp_users';
$user = 'proftpd';
$pass = 'your_password';
$charset = 'utf8mb4';

// Подключение к базе данных
try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=$charset", $user, $pass);
} catch (PDOException $e) {
    die('Подключение не удалось: ' . $e->getMessage());
}

// Добавление пользователя
$username = $_POST['username'];
$password = $_POST['password'];
$dir = $_POST['dir'] ?? '/';

$stmt = $pdo->prepare("INSERT INTO users (username, password, dir) VALUES (:username, :password, :dir)");
$stmt->execute([':username' => $username, ':password' => $password, ':dir' => $dir]);

echo "Пользователь успешно добавлен.";
?>

Не забудьте заменить «your_host», «your_password» и «your_database» на реальные значения.

Запуск ProFTPD

После того как все настроено, запустите ProFTPD:
systemctl restart proftpd
Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев