Pure-FTPd
Homepage: Pure-FTPd
Функциональные возможности:
- Встроенная поддержка UTF-8.
- Возможна работа по FXP протоколу
- Поставляется с программой мониторинга pure-ftpwho, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью.
- Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTMLили XML.
- Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский).
- Создание виртуальных пользователей.
- Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания).
- После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).
- Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).
Примеры
- Добавить пользователя и установить для него пароль:
# pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c Ivanov -y 4
- Доступ к хостингу с полным доступом
# pure-pw useradd YourUser -u ftpusers -g www-data -d /var/www/YourDomen.ua -c "Ivanov Ivan" -y 4 # chown -R ftpusers:www-data или # pure-pw useradd YourUser -u www-data -g www-data -d /var/www/YourDomen.ua -c "Ivanov Ivan" -y 4
- Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных, используйте опцию '-m' в командах модификации
# pure-pw mkdb
- Просмотр данных пользователя
pure-pw show YourLogin
- Изменить пароль
pure-pw passwd YourLogin
Использование Pure-FTPd
- Установка
# aptitude install pure-ftpd
Конфигурационные файлы:
/etc/default/pure-ftpd-common /etc/pure-ftpd
# ls -l auth/ lrwxrwxrwx 1 root root 26 2011-03-23 12:54 65unix -> ../conf/UnixAuthentication lrwxrwxrwx 1 root root 25 2011-03-23 12:54 70pam -> ../conf/PAMAuthentication # ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/67PureDB
Механизм Virtual Users, который есть в Pure FTPD, представляет из себя следующее - в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным аккаунтом. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и пр. Управление виртуальными пользователями осуществляется с помощью программы pure-pw, параметры пользователей хранятся в /usr/local/etc/pureftpd.pdb. У нас имеется системный пользователь portal , создадим для него одноименного виртуального пользователя.
# pure-pw useradd portal -u portal -g portal -d /home/portal/
- Настройка. Все операции над пользователями FTPсервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа:
- Создание файла со списком аккаунтов пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов
- Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/pureftpd.pdb');
- Создание файла аккаунтов. Каждая запись файла виртуальных аккаунтов имеет следующий формат:
account:pass:uid:gid:name:dir:ul bw: dl bw:ul ratio:dl ratio:max con: files quota:size quota:authorized local IPs:refused local IPs:authorized client IPs:refused client IPs:time
Рассмотрим значения полей записи:
'account' -- имя аккаунта; 'pass' -- пароль пользователя в зашифрованном виде; 'uid' -- uid пользователя, с правами которого будет работать виртуальный пользователь; 'gid' -- gid пользователя, с правами которого будет работать виртуальный пользователь; 'name' -- полное имя пользователя аккаунта; 'dir' -- директория пользователя аккаунта; 'ul bw' -- скорость upload для данного аккаунта; 'dl bw' -- скорость download для данного аккаунта; 'ul ratio' -- соотношение upload к download; 'dl ratio' -- соотношение download к upload; 'max con' -- максимальное число одновременных подключений для данного аккаунта; 'files quota' -- квота на количество файлов в директории пользователя; 'size quota' -- квота на суммарный размер файлов в директории пользователя; 'auth local IPs' -- указывает ip адрес интерфейса сервера, на который пользователь может подключаться (при наличии нескольких сетевых интерфейсов на сервере); 'ref local IPs' -- указывает ip адрес интерфейса сервера, на который пользователь подключаться не может; 'auth client IPs' -- ip адреса, с которых пользователю разрешено подключаться; 'ref client IPs' -- ip адреса, с которых пользователя запрещено подключаться; 'time' -- временной промежуток, в течение которого пользователь может получать доступ к аккаунту.
- Добавление нового пользователя
Добавление аккаунта осуществляется с помощью утилиты 'pure-pw'. Синтаксис команды следующий:
pure-pw useradd login [-f file] -u uid [-g gid] -D/-d dir [-c name] [-t num] [-T num] [-n num] [-N num] [-q num] [-Q num] [-r ip,..] [-R ip,..] [-i ip,..] [-I ip,..] [-y num] [-z hhmm-hhmm] [-m]
Рассмотрим значения используемых опций:
'login' -- имя добавляемого аккаунта; '-f file' -- задает имя файла списка аккаунтов, отличное от значения по умолчанию, т.е. от '/etc/pureftpd.passwd'. '-u uid' -- задает uid пользователя; '-g gid' -- задает gid пользователя; '-D/-d dir' -- задает директорию для пользователя аккаунта, при использовании '-d' автоматически назначается chroot в этой директории, при использовании '-D' chroot не будет включен; При запуске сервера с опцией '-j' директории пользователей будут создаваться автоматически при первом их подключении к системе, в противном случае, вы сами должны будете создать указанную директорию; '-c name' -- задает полное имя пользователя аккаунта; '-t num' -- задает скорость download (в Kb/s); '-T num' -- задает скорость upload (в Kb/s); '-n num' -- задает ограничение на количество файлов в директории пользователя; '-N num' -- задает ограничение на размер файлов в директории пользователя (в Mb); '-q num' -- задает соотношение upload к download; '-Q num' -- задает соотношение download к upload; '-r ip' -- задает ip адреса, с которых пользователю разрешено подключаться, также можно задавать целые подсети, используя CIDR маску; '-R ip' -- задает ip адреса, с которых пользователю запрещено подключаться; '-i ip' -- при нескольких интерфейсах на сервере позволяет указать ip адрес того интерфейса, на который данный пользователь может подключаться; '-I ip' -- при нескольких интерфейсах на сервере позволяет указать ip адрес того интерфейса, на который пользователь подключаться не может; '-y num' -- задает количество одновременных подключений для аккаунта; '-z hhmm-hhmm' -- задает временной промежуток, в течение которого пользователь может получать доступ к аккаунту, например '-z 1830-2240' задает временной промежуток для доступа к аккаунту с 18:30 до 22:40, причем если пользователь подключен к серверу во время истечения указанного значения, соединение не будет прервано. '-m' -- использовании этой опции совместно с остальными позволяет автоматически запустить 'pure-pw mkdb' и зафиксировать внесенные изменения в файле '/etc/pureftpd.pdb'. Работа с 'pure-pw mkdb' будет рассмотрена чуть позже.
- Изменение параметров аккаунта пользователя.
Изменение параметров аккаунта также осуществляется с помощью pure-pw:
'pure-pw usermod login [-f passwd file] attr value [attr value ...] [-m]'
'attr value' в данном случае -- это те же параметры, которые используются при добавлении нового аккаунта.
Не забывайте использовать параметр '-f passwd file' в том случае, если список аккаунтов изначально создавался в файле, отличном от '/etc/pureftpd.passwd'.
530 Sorry, but I can't trust you
Для устранения этой ошибки нужно в /etc/pure-ftpd/conf/MinUID изменить значение 1000 на 33 этим мы разрешим системных пользователей начиная с 33, в моем случае это пользователь www-data.
DontResolve
Записывать в лог IP, а не имя клиента. Это приведет к ускорению работы Pure-FTPd так как не будет использоваться DNS.
echo'yes'>/etc/pure-ftpd/conf/DontResolve
Bind изменить IP,port
Для того чтобы задать определенный IP и/или порт нужно создать файл Bind, в котором через запятую указать IP и порт. Можно задать пустые значение, в этом случае будут использованы значения по умолчанию:
echo'10.26.95.227,21000'>/etc/pure-ftpd/conf/Bind
Ссылки
Настройка PureFtpd + MySql
- apt-get install pure-ftpd-common pure-ftpd-mysql
Создание БД
- db.sql - Дамп SQL
Добавление пользователя
- adduser site.ru
- INSERT INTO users VALUES ('site.ru',MD5('tmppasswd'),1000, 1100, '/var/www/nginx-sites/site.ru', 100, 50, 75, 75, '*', 'Ftp user (for example)', '1', 0, 0);
- mkdir /var/www/nginx-sites/site.ru
- chown -R site.ru:site.ru /var/www/nginx-sites/site.ru/*
- Где пользоватеь:
- site.ru - 1000
- Где группа:
- site.ru - 1100
PureFTPd with MySQL
Настройка
Включить логирование
$ echo 'ftp' > /etc/pure-ftpd/conf/SyslogFacility $ echo 'yes' > /etc/pure-ftpd/conf/VerboseLog
PureFTP Complete Upload Script
После получения полностью залитого файла, скрипт переименует его в ended.<uploaded_filename>.
#!/bin/sh touch "$1.complete"
иди
#!/bin/bash fullpath=$1 filename=$(basename "$1") dirname=${fullpath%/*} mv "$fullpath" "$dirname/ended.$filename"
Конфигурция
Конфигурация осуществляется через базовый конфигурационный файл /etc/default/pure-ftpd-common
Включает испльзование скрипта
$ sudo echo "yes" > /etc/pure-ftpd/conf/CallUploadScript
Настройка pure-ftpd-common
STANDALONE_OR_INETD=standalone VIRTUALCHROOT=false UPLOADUID= UPLOADGID= UPLOADSCRIPT=<path/to/complete_upload_script.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