Ставил и использовал большое количество фтп серверов, но в итоге для 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.
Во вспоминании по настройки сервера очень помог ресурс.
No Comments