Ставим необходимые пакеты:
$ sudo apt-get install proftpd
Настраиваем:
$ sudo mcedit /etc/proftpd/proftpd.conf #Тип сервера (выделенный) ServerType standalone #Чтобы предотвратить попытку положить или взломать демон proftpd командой "ls */../*/../*/..." DenyFilter \*.*/ #Разрешить перезапись файлов AllowOverwrite on #Разрешить "дозаливку" файлов при ошибках AllowStoreRestart on #Максимальное кол-во подключений с одного хоста + сообщение при превышении ограничения MaxClientsPerHost 2 "too many connections by peer" #Общее максимальное кол-во подключений MaxInstances 10 #Мыло админа ServerAdmin admin@my.domen.com #Имя сервера ServerName "MY FTP SERVER" #Замыкать всех в каталоге "/mnt/users/ftp" DefaultRoot /mnt/users/ftp #Удалить данные при прерывании сессии DeleteAbortedStores on #Не показывать файлы пока они полностью не загружены на сервер HiddenStores on #Маска прав для вновь созданных файлов и каталогов #первый параметр для файлов (666 - параметр = новый файл) #второй параметр для каталогов (777 - параметр = новый каталог) Umask 022 022 #Root`y логиниться запрещено RootLogin off #Сообщение при удачном логине DisplayLogin /etc/proftpd/.welcome.msg #Запретить удаление файлов всем, кроме пользователя alah <Limit WRITE> AllowUser alah DenyAll IgnoreHidden on </Limit> #Разрешить всем выкладывать файлы на сервер <Limit STOR> AllowAll </Limit> #Глобальные настройки сервера для всех виртуальных <Global> DefaultRoot /mnt/users/ftp DeleteAbortedStores on HiddenStores on Umask 022 022 RootLogin off DisplayLogin /etc/proftpd/.welcome.msg </Global> #Настройки анонимных подключений <Anonymous /mnt/users/ftp> #Юзер, от имени которого будем работать User ftp Group ftp UserAlias anonymous ftp #Проверять наличие у юзера оболочки RequireValidShell off #Просить пароль у анонимов AnonRequirePassword off #Разрешить фнонимам презаписывать файлы AllowOverwrite off #Максимальное кол-во анонимов MaxClients 10 "Sorry, max %m users -- try again later" #Ограничить логины анонимов с определенных хостов <Limit LOGIN> Order allow,deny Allow from all Deny from .microsoft.com, .msn.com </Limit> #Запретить анонима удалять файлы с сервера <Limit WRITE> DenyAll </Limit> </Anonymous>
На папку /mnt/users/ftp нужно дать права 777
Готово! Можно пользоваться.
P.S.
Если FTP-сервер за NAT`ом - необходимо добавить в конфиг следующие опции:
MasqueradeAddress ftp.mydomain.com # FQDN вашего FTP MasqueradeAddress 123.45.67.89 # внешний IP PassivePorts 57000 58000 # диапазон портов для пассивного подключения
и разрешить диапазон портов пассивного подключения в IPTABLES:
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables -A INPUT -p tcp --match multiport --dports 57000:58000 -j ACCEPT
ну и пробросить соответствующие порты на шлюзе.