The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка pure-ftpd для работы с mysql (mysql ftp auth)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mysql, ftp, auth,  (найти похожие документы)
From: Ушаков Андрей <andew@sumteh.ru> Newsgroups: email Date: Mon, 19 Jan 2004 14:31:37 +0000 (UTC) Subject: Настройка pure-ftpd для работы с mysql Pure-ftpd позволяет хранить информацию о пользователях в mysql базе. Хранение данных о пользователях в mysql обладает следующими приемуществами: 1. Позволяет избежать использования системных аккаунтов для ftp-доступа; 2. Позволяет упростить процедуру администрирования ftp-аккаунтов; 3. Позволяет использовать централизованную базу для нескольких ftp-серверов; Для включения поддержки mysql в pure-ftpd вам необходимы установленные библиотеки mysql-клиента. Запуск скрипта configure в таком случае будет выглядеть так: './configure --with-mysql' Если библиотеки находятся в нестандартной директории, укажите эту директорию: './configure --with-mysq=/path/to/mysqllib/' Также полезно будет использовать следующие опции скрипта configure: '--with-peruserlimits' -- позволяет задавать ограничения для каждого пользователя; '--with-throttling' -- позволяет установить ограничение скорости работы с ftp для пользователей; '--with-ratios' -- позволяет установить соотношение download/upload для пользователей; '--with-quotas' -- позволяет установить квоту дискового пространства для пользователя; ---------------------------- Параметры подключения к базе ---------------------------- Далее необходимо создать файл конфигурации подключения к mysql серверу (pureftpd-mysql.conf): MYSQLServer localhost # хост сервера; MYSQLPort 3306 # порт сервера (если используется); MYSQLSocket /tmp/mysql.sock # сокет сервера (если используется); MYSQLUser ftp # логин для подключения к базе; MYSQLPassword ftp # пароль для подключения к базе; MYSQLDatabase ftp # имя базы, где будет хранится информация о пользователях; MYSQLCrypt cleartext # тип хранения пароля пользователя в базе; MySQLTransactions On # позволяет включить транзакции; Далее идет описание запросов для получения данных о пользователях сервером: MYSQLGetPW SELECT Password FROM users WHERE User="\L" # запрос на получение пароля пользователя; MYSQLGetUID SELECT Uid FROM users WHERE User="\L" # запрос на получения uid пользователя; MYSQLGetGID SELECT Gid FROM users WHERE User="\L" # запрос на получение gid пользователя; Вместо параметров MYSQLGetUID и MYSQLGetGID можно использовать следующие опции: MYSQLDefaultUID 1000 MYSQLDefaultGID 1000 Они позволяют задать значения uid и gid для всех пользователей базы; Поясню, что uid и gid, это uid и gid системного пользователя, с правами которого пользователи, хранящиеся в базе, будут получать доступ к своим директориям. MYSQLGetDir SELECT Dir FROM users WHERE User="\L" # запрос на получение директории пользователя; Далее идут опции, необязательные для включения в файл конфигурации. Используйте их в том случае, если вы хотите использовать возможность, предоставляемую этой оцией. MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L" # запрос параметра квоты для данного пользователя; # запросы на получение параметров для установления соотношение download/upload; MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" # запросы на получение параметров ограничения скорости работы с ftp для пользователей; MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" Под "\L" в данном случае подразумевается логин пользователя, для которого сервер получает данные. В запросах также можно использовать следующие переменные: "\L" -- логин пользователя; "\I" -- IP адрес сервера, куда подключается пользователь; "\P" -- порт, на который подключается пользователь; "\R" -- IP адрес, с которого подключается пользователь; "\D" -- IPv4 адрес, с которого подключается пользователь (long decimal number); Использование переменной "\I" позволяет установить те сервера, к которым может подключаться данный пользователь, при хранении информации в базе для нескольких серверов одновременно; В этом случае запрос будет выглядеть так: SELECT Password FROM users WHERE User="\L" AND ServerIP="\I", где ServerIP -- поле, содержащее IP адрес сервера; Использовании переменной "\R" позволяет устанановить IP, с которого может подключаться пользователь; В этом случае запрос будет выглядеть так: SELECT Password FROM users WHERE User="\L" AND UserIP="\R", где UserIP -- поле, содержащее IP адрес пользователя; ---------------------------------- Структура таблицы с пользователями ---------------------------------- Создадим базу "ftp": mysql> CREATE DATABASE ftp; Назначим права на базу для пользователя "ftp" с паролем "ftp": mysql> GRANT ALL PRIVILEGES ON ftp.* TO ftp@localhost IDENTIFIED BY 'ftp'; В простейшем случае нам хватит одной таблицы "users", которая имеет следующую структуру: mysql> CREATE TABLE users ( User varchar(16) NOT NULL default '', -- логин пользователя; Password varchar(64) NOT NULL default '', -- пароль пользователя; Uid int(11) NOT NULL default '10000', -- uid пользователя; Gid int(11) NOT NULL default '10000', -- gid пользователя; Dir varchar(128) NOT NULL default '', -- директория пользователя; UserIP varchar(15) NOT NULL default '', -- ip, с которого может подключаться пользователь; ServerIP varchar(15) NOT NULL default '', -- ip сервера, на который может подключаться пользователь; QuotaSize int(11) NOT NULL default '5', -- квота пользователя (в MB); DLBandwidth int(11) NOT NULL default '128', -- ограничение скорости на download (в Kb/s); DLBandwidth int(11) NOT NULL default '128', -- ограничение скорости на upload (в Kb/s); ULRatio int(11) NOT NULL default '1', DLRatio int(11) NOT NULL default '1', PRIMARY KEY (User) ); Ну вот, база готова, осталось внести в нее данные и запустить сервер: '/usr/local/sbin/pure-ftpd -14ABEH -l mysql:/home/ftp-mysql.conf' Как видите, после параматра "-l" указываем путь к файлу с настройками mysql доступа, т.е. к pureftpd-mysql.conf. Для анононимного доступа достаточно завести системного пользователя "ftp" и назначить ему директорию.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Barret (?), 16:10, 05/03/2005 [ответить]  
  • +/
    ***DLBandwidth***(ошибка ULBandwidth) int(11) NOT NULL default '128',
    -- ограничение скорости на download (в Kb/s);
    DLBandwidth int(11) NOT NULL default '128',
    -- ограничение скорости на upload (в Kb/s);
     
  • 2, saygak (ok), 14:40, 22/06/2005 [ответить]  
  • +/
    В таблице два поля DLBandwidth. Одно должно называться ULBandwidth
     
  • 3, Пипкин Вася (?), 04:25, 02/05/2006 [ответить]  
  • +/
    А как можно настроить на мультидоменный доступ? т.е. пользователь в качестве имени указывает user@domain и свой пас, и дополнительно запрашивается еще поле domain в БД. Кстати, есть поддержка MD5 хеширования паролей?
     
  • 4, vasilich (ok), 18:40, 21/02/2007 [ответить]  
  • +/
    скажите а как воспользоваться ограничением ULBandwidth и DLBandwidth для этого самого анонимного пользователя, если он системный? заведение в базе пользователя ftp не помогает, все качаеться на полном ходу...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру