Устанавливаем 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 и наслаждаемся работой сервера.