Homepage: Pure-FTPd
Функциональные возможности:
$ groupadd ftp $ useradd -s /bin/false -d /bin/null -c "pureftpd user" -g ftp ftp
$ 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
Самым удобным способом хранения и конфигурирования FTP является БД MySql. Для подключения хранилища достаточно настроить MySQLConfigFile.
После получения полностью залитого файла, скрипт переименует его в 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"
nano /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone VIRTUALCHROOT=false UPLOADUID= UPLOADGID= UPLOADSCRIPT=/etc/pure-ftpd/uploadscript.sh
$ 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