Устанавливаем pure-ftpd

Берем свежую версию сервера с официального сайта, распаковываем архив

gunzip < pure-ftpd-1.0.22.tar.gz | tar -xfv -

и пишим конфигурационный файл .conf.sh вот такого содержания:

./configure \
	--prefix=/usr/local \
	--sysconfdir=/usr/local/etc/pureftpd \
	--with-altlog \
	--with-puredb \
	--with-ratios \
	--with-throttling \
	--with-quotas \
	--with-ftpwho \
	--with-largefile \
	--with-language=english \
	--with-tls \
	--with-certfile=/etc/ssl/certs/pftp.pem

Сконфигурируем, скомпилируем и установим:

sh .conf.sh
make all
make install

Пользователей решено было хранить в файлике похожем на файл паролей. Для этого сделаем отдельную группу и специального пользователя:

pw groupadd pure
pw useradd pureuser -g pure -d /dev/null -s /etc

После этого можно создавать пользователей специальной утилиткой. Создадим трех пользвателей, два из которых простые а один босс:

pure-pw useradd boss -u pureuser -D /usr/home/pureuser/boss
pure-pw useradd usr1 -u pureuser -d /usr/home/pureuser/usr1
pure-pw useradd usr2 -u pureuser -d /usr/home/pureuser/usr2

Нужно обратить внимание на опцию -D. В первой команде это большая буква, в двух последующих - маленькая. Простые пользователи будут чрутиться в свой каталог. А босс сможет просматривать каталоги пользователей. Изначально каталога /usr/home/pureuser не существует, поэтому его необходимо создать и назначить ему привилегии используя созданные нами группу pure и пользователя pureuser.

cd /usr/home
chown -R pureuser:pure pureuser/

Почти все готово к старту. На этом этапе создаем сертификат с нужным именем и кладем его в нужный каталог, который указали при конфигурировании.

cd /etc/ssl/certs
openssl req -new -newkey rsa:1024 -days 1825 -nodes -x509 -keyout pftp.pem -out pftp.pem

Обращений к моему серверу будет не очень много, поэтому стартовать он будет из inetd

ftp stream  tcp nowait  root    /usr/local/sbin/pure-ftpd   \
	pure-ftpd -Y2 -j -c7 -4 -C5 -D -E -H \
	-O stats:/var/log/pureftpd.log \
	-l puredb:/usr/local/etc/pureftpd/pureftpd.pdb

Если работать предполагается с xinetd, то запись будет выглядеть так (/etc/xinetd.d/ftp):

service ftp
{
        disable         = no
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        server          = /usr/local/sbin/pure-ftpd
        server_args     = -Y2 -j -c7 -4 -C5 -E -H -O stats:/var/log/pureftpd.log -l unix
}

-Y2 заставляет работать только используя TLS. -j заставляет автоматически создавать каталоги пользователей. -c7 максимальное количество клиентов. -C5 максимльное количество клиентов с одного IP. -D показывать скрытые файлы (с точкой). -E никаких анонимных поключений. -H не резолвить IP адреса. -O stats:/var/log/pureftpd.log куда писать лог и в каком формате. -l puredb:/usr/local/etc/pureftpd/pureftpd.pdb где брать пользователей.

Теперь все готово к старту. Передернем inetd и наслаждаемся работой сервера.