Pure-FTPd
Homepage: Pure-FTPd
Функциональные возможности:
- Встроенная поддержка UTF-8.
- Возможна работа по FXP протоколу
- Поставляется с программой мониторинга pure-ftpwho, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.
- Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTMLили XML.
- Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский).
- Создание виртуальных пользователей.
- Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания).
- После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).
- Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).
Для изменения настроек сервера нужно создать файл с названием параметра, например чтобы задать порты для пассивного режима: Правила iptables для FTP
Создание пользователей
$ groupadd ftp $ useradd -s /bin/false -d /bin/null -c "pureftpd user" -g ftp ftp
Установка SSL сертификата для TLS
$ mkdir -p /etc/ssl/private/ $ openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem $ chmod 600 /etc/ssl/private/*.pem
Настройка
Устанавливаем пакет «pure-ftpd-mysql». Настройка происходит с помощью индивидуальных файлов в /etc/pure-ftpd/conf. Название каждого файла отражает параметр, настройки которого он представляет. В содержимом файла представлены необходимые значения.
echo yes > /etc/pure-ftpd/conf/ChrootEveryone echo yes > /etc/pure-ftpd/conf/CreateHomeDir echo 50 > /etc/pure-ftpd/conf/MaxClientsNumber echo 5 > /etc/pure-ftpd/conf/MaxClientsPerIP echo 95 > /etc/pure-ftpd/conf/MaxDiskUsage echo 1 > /etc/pure-ftpd/conf/TLS echo 117 007 > /etc/pure-ftpd/conf/Umask echo no > /etc/pure-ftpd/conf/UnixAuthentication echo no > /etc/pure-ftpd/conf/PAMAuthentication echo clf:/var/log/pure-ftpd/transfer.log > /etc/pure-ftpd/conf/AltLog echo 1000 > /etc/pure-ftpd/conf/MinUID echo /etc/pure-ftpd/db/mysql.conf > /etc/pure-ftpd/conf/MySQLConfigFile echo yes > /etc/pure-ftpd/conf/NoAnonymous echo /etc/pure-ftpd/pureftpd.pdb > /etc/pure-ftpd/conf/PureDB echo no > /etc/pure-ftpd/conf/DontResolve
Включить логирование
$ echo 'ftp' > /etc/pure-ftpd/conf/SyslogFacility $ echo 'yes' > /etc/pure-ftpd/conf/VerboseLog
Подключение MySQL
Самым удобным способом хранения и конфигурирования FTPявляется БД MySql. Для подключения хранилища достаточно настроить MySQLConfigFile.
- echo /etc/pure-ftpd/db/mysql.conf > /etc/pure-ftpd/conf/MySQLConfigFile
PureFTP Complete Upload Script
После получения полностью залитого файла, скрипт переименует его в ended.<uploaded_filename>.
Конфигурция
Конфигурация осуществляется через базовый конфигурационный файл /etc/default/pure-ftpd-common
Включает испльзование скрипта
$ sudo echo "yes" > /etc/pure-ftpd/conf/CallUploadScript
Файл скрипта
#!/bin/sh touch "$1.complete"
или
#!/bin/bash fullpath=$1 filename=$(basename "$1") dirname=${fullpath%/*} mv "$fullpath" "$dirname/ended.$filename" chmod 664 "$dirname/ended.$filename" chown :www-data "$dirname/ended.$filename"
Настройка pure-ftpd-common
nano /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone VIRTUALCHROOT=false UPLOADUID= UPLOADGID= UPLOADSCRIPT=/etc/pure-ftpd/uploadscript.sh
UPLOADUID = 1002
UPLOADGID = 1002
Относятся только к UPLOADSCRIPT.
Пример: /usr/sbin/pure-uploadscript -r /etc/pure-ftpd/uploadscript.sh -B -u 1002 -g 1002
UPLOADGID = 1002
Относятся только к UPLOADSCRIPT.
Пример: /usr/sbin/pure-uploadscript -r /etc/pure-ftpd/uploadscript.sh -B -u 1002 -g 1002
Проверка
$ ps aux | grep pure-uploadscript ftpuser 18671 0.0 0.0 11912 672 ? Ss 19:40 0:00 /usr/sbin/pure-uploadscript -r <upload script path here> -B -u 1021 -g 1022