Установка proftpd

Тут всё стандартно:

apt-get  install proftpd

Если распаковoщик спросит вариант запуска, выбирайте standalone.
На этом шаге у вас уже есть полноценный FTP сервер, и вы можете подключать к серверу с системными и созданными пользователями (напр. root)
Напоминаю: смена пароля у пользователя: passwd username

Конфигурация proftpd

Теперь мы отвяжем пользователей FTP от системных:
Для этого поправим конфигурационный файл nano /etc/proftpd/proftpd.conf
Я привожу настройки, которые вам необходимо поменять:

 # отвязываем от системных пользователей
RequireValidShell               off
# права по-умолчанию 775. Защищает от того, что загруженые файлы будут всем на запись.
Umask                           002  002

# Далее необязательно. если будете давать доступ по ftp только к каталогам с сайтами, то поставьте сюда юзера и группу вебсервера (по-умолчанию www-data www-data) 
User ftp
Group  nogroup

Добавим (в самый низ) ссылки на соотв. файлы собственной базы proftpd (Она имеет синтаксис подобный системной)

AuthUserFile  /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group

Перезапустим FTP-сервер: service proftpd restart или /etc/init.d/proftpd restart
На этом работа с конфигурационным файлом окончена

Управление пользователями proftpd

Установим, права какого пользователя давать.
Допустим, мы решили давать нашему пользователю права «как у апача». Установим ID этого пользователя, просто посмотрев в файле /etc/passwd

 cat /etc/passwd | grep www-data
# вы получите что-то вида
www-data:x:33:33:www-data:/var/www:/bin/sh

33 и будет искомым ID.

Чтобы добавить пользователя выполните(если вы перейдёте в папку /etc/proftpd, аргумент –file можно не указывать):
ftpasswd –passwd –file=/etc/proftpd/ftpd.passwd –name=u1 –home=/home/stat.serverstat.ru –uid=33 –shell=/bin/false Это добавит FTP пользователя u1 с домашней папкой /home/stat.serverstat.ru . Пользователь будер работать с правами системного пользователя с ID равным –uid (его мы выяснили на первом шаге) .
Изменения в настройках авторизации вступают в силу мнгновенно.

Также у proftpd есть механизм лимитов (ftpquota), просмотра активных сессий (ftpwho) и многое другое, подробнее см. http://www.proftpd.org/docs/

Дополнительно: TLS

Можно дополнительно защитить общение с сервером, включением TLS.
Сгенерируем сертификат [Все параметры кроме Common Name(имя сервера) нам неважны] (и поставим на него безопасные права.):

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/proftpd.cert.pem -keyout /etc/proftpd/proftpd.key.pem 
chown 0640  /etc/proftpd/proftpd.cert.pem
chown 0600  /etc/proftpd/proftpd.key.pem

Далее скопируем на всякий случай оригинальный конфиг модуля tls: cp /etc/proftpd/tls.conf /etc/proftpd/tls.conf.old
И внесём изменения в файл /etc/proftpd/tls.conf

<IfModule mod_tls.c>
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                SSLv23
TLSOptions                 NoCertRequest
TLSRSACertificateFile      /etc/proftpd/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/proftpd.key.pem
TLSVerifyClient            off
# если хотите всё таки разрешить обычное соединение, поставьте TLSRequired off
TLSRequired                on
</IfModule>

Добавим Include /etc/proftpd/tls.conf в конец файла /etc/proftpd/proftpd.conf и перезапустим proftpd.
Теперь, выбрав в настройках explict FTP (или протокол ftpes:) вы можете пользоваться защищенным соединением по стандартному 21 порту.