Pure-ftpd на FreeBSD

Ставил и использовал большое количество фтп серверов, но в итоге для FreeBSD остановился на pure-ftpd с поддержкой mysql. Фтп сервер небольшой, удобный в настройки, быстрый и главное замечательно работает с любой версией mysql.

Прежде чем устанавливать – не поленитесь обновите дерево портов, делаю это через cvs(позже опишу настройку этого решения):

# cd /usr/ports/
# make update && make fetchindex

после этого заходим, настраиваем параметры:

# cd /usr/ports/ftp/pure-ftpd/
# make config

выбираем опции установки:
– MYSQL
– PRIVSEP
– PERUSERLIMITS
– THROTTLING
– BANNER
– UPLOADSCRIPT
– UTF8
– SENDFILE
– LARGEFILE
Нажимаем OK и начинаем установку:

# make install clean

После установки в папке /usr/local/etc появились файлы конфигурации – pure-ftpd.conf.sample pureftpd-ldap.conf.sample pureftpd-mysql.conf.sample pureftpd-pgsql.conf.sample. Копируем, убирая слово sample только необходимые для настройки:

# cd /usr/local/etc
# cp pure-ftpd.conf.sample pure-ftpd.conf
# cp pureftpd-mysql.conf.sample pureftpd-mysql.conf

И приступаем к непосредственно к настройки

pure-ftpd.conf
ChrootEveryone              yes
BrokenClientsCompatibility  no
MaxClientsNumber            50
Daemonize                   yes
MaxClientsPerIP             5
VerboseLog                  no
DisplayDotFiles             no
AnonymousOnly               no
NoAnonymous                 yes
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 10
MySQLConfigFile               /usr/local/etc/pureftpd-mysql.conf
LimitRecursion              2000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
AntiWarez                   no
Umask                       133:022
MinUID                      100
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       yes
ProhibitDotFilesRead        yes
AutoRename                  no
AnonymousCantUpload         yes
NoChmod                     yes
KeepAllFiles                yes
MaxDiskUsage               80
CustomerProof              yes
IPV4Only                 yes
FileSystemCharset   koi8-r
ClientCharset       cp1251

И настройка для подключения к базе mysql

pureftpd-mysql.conf
MYSQLSocket     /tmp/mysql.sock
MYSQLUser       user
MYSQLPassword   password
MYSQLDatabase   pureftpd
MYSQLCrypt      cleartext
MYSQLGetPW      SELECT password FROM users WHERE user="L" AND active ="1"
MYSQLGetUID     SELECT uid FROM users WHERE user="L"
MYSQLGetGID     SELECT gid FROM users WHERE user="L"
MYSQLGetDir     SELECT home FROM users WHERE user="L"
MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE user="L"
MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE user="L"
MySQLGetRatioUL SELECT ULRatio FROM users WHERE user="L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE user="L"
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE user="L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE user="L"

Каждый параметр подробно описан в самом конфигурационном файле, поэтому не будем останавливаться на каждом в отдельности.
Далее заходим в mysql и создаем базу pureftpd, пользователя user c паролем password, даем пользователю user права на базу pureftpd и создаем таблицу:

# mysql
mysql> CREATE DATABASE pureftpd;
mysql> GRANT ALL PRIVILEGES on pureftpd.* to user@localhost identified by 'password';
mysql> USE pureftpd;
mysql> CREATE TABLE `users` (
mysql> `user` varchar(16) binary NOT NULL,
mysql> `password` varchar(64) binary NOT NULL,
mysql> `uid` int(11) NOT NULL default '-1',
mysql> `gid` int(11) NOT NULL default '-1',
mysql> `home` varchar(128) binary NOT NULL default '/usr/home/anonymous',
mysql> `QuotaFiles` int(9) NOT NULL default '10000',
mysql> `QuotaSize` int(6) NOT NULL default '100',
mysql> `ULRatio` int(2) NOT NULL default '1',
mysql> `DLRatio` int(2) NOT NULL default '10',
mysql> `ULBandwidth` int(6) NOT NULL default '1024',
mysql> `DLBandwidth` int(6) NOT NULL default '1024',
mysql> `active` int(1) NOT NULL default '1',
mysql> PRIMARY KEY  (`user`)
mysql> ) TYPE=MyISAM;

Как таковая настройка закончилась, теперь необходимо создать хотябы одного пользователя. Добавляем пользователя, создаем папку и даем возможность пользователю записывать туда файлы/создавать директории:

mysql> INSERT INTO `users` VALUES ('user', 'password', 1111, 1111, '/usr/ftp/user', 10000, 100, 1, 10, 1024, 1024, 1);
mysql> quit;
# mkdir /usr/ftp/user
# chown 1111:1111 /usr/ftp/user

Вот и все. Ошибки(как и остальные логи) по умолчанию будут записываться в /var/log/xferlog.

Во вспоминании по настройки сервера очень помог ресурс.

Leave a Reply