Документация по ОС FreeBSD Пятница, 03.05.2024, 07:47
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » FTP

Настройка 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" и назначить ему директорию.
Категория: FTP | Добавил: oleg (29.10.2007)
Просмотров: 1755 | Комментарии: 3 | Рейтинг: 5.0/1 |
Всего комментариев: 3
3 Monstreek  
0
А неподскажете если более расшириные настройки для анонимного пользователя, например скорости, кворты, права на файлы выставлять, и прочее?

2 Сергей  
0
запуск удобнее делать /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf

1 Сергей  
0
Достаточная статья и поучительная .... от себя ещё добавлю что во фри удобнее зайти на /usr/ports/ftp/pure-ftpd и выполнить команду make install WITH_MYSQL=yes

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024