Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>network}} ====== Pure-FTPd ====== Homepage: [[http://www.pureftpd.org|Pure-FTPd]] **Функциональные возможности:** * Встроенная поддержка [[UTF-8]]. * Возможна работа по FXP протоколу * Поставляется с программой мониторинга **pure-ftpwho**, которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью. * Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTML или [[XML]]. * Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский). * Создание виртуальных пользователей. * Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания). * После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке). * Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts). <note tip>Для изменения настроек сервера нужно создать файл с названием параметра, например чтобы задать порты для пассивного режима: [[Правила iptables для FTP]]</note> ===== Примеры ===== * Добавить пользователя и установить для него пароль: <file> # pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c Ivanov -y 4 </file> * Доступ к хостингу с полным доступом<file> # 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 </file> * Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных, используйте опцию '-m' в командах модификации<file> # pure-pw mkdb </file> * Просмотр данных пользователя<file> pure-pw show YourLogin </file> * Изменить пароль<file> pure-pw passwd YourLogin </file> ====== Использование Pure-FTPd ====== * **Установка** <file> # aptitude install pure-ftpd </file> Конфигурационные файлы: <file> /etc/default/pure-ftpd-common /etc/pure-ftpd </file> <note tip>У PureFTPd в Ubuntu не используется файл конфигурации pure-ftpd.conf - все настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов с именем параметра и его значением внутри.</note> Включим авторизацию PureDB (создадим символическую ссылку), по умолчанию была включена авторизация Unix и PAM <file> # 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 </file> Механизм Virtual Users, который есть в Pure FTPD, представляет из себя следующее - в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным аккаунтом. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и пр. Управление виртуальными пользователями осуществляется с помощью программы pure-pw, параметры пользователей хранятся в /usr/local/etc/pureftpd.pdb. У нас имеется системный пользователь portal , создадим для него одноименного виртуального пользователя. <file> # pure-pw useradd portal -u portal -g portal -d /home/portal/ </file> * **Настройка**. Все операции над пользователями FTP сервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа: - Создание файла со списком аккаунтов пользователей и их параметрами (по умолчанию '/etc/pureftpd.passwd'), на этом этапе вы также можете вносить изменения в список аккаунтов - Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/pureftpd.pdb'); * **Создание файла аккаунтов**. Каждая запись файла виртуальных аккаунтов имеет следующий формат: <file> 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 </file> Рассмотрим значения полей записи: <file> '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' -- временной промежуток, в течение которого пользователь может получать доступ к аккаунту. </file> <note important>Допускается пустое значение всех полей кроме 'account', 'pass', 'uid', 'gid' и 'dir'.</note> * **Добавление нового пользователя** Добавление аккаунта осуществляется с помощью утилиты 'pure-pw'. Синтаксис команды следующий: <file> 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] </file> Рассмотрим значения используемых опций: <file> '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' будет рассмотрена чуть позже. </file> * **Изменение параметров аккаунта пользователя**. Изменение параметров аккаунта также осуществляется с помощью pure-pw: <file> 'pure-pw usermod login [-f passwd file] attr value [attr value ...] [-m]' </file> '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]]. <file bash> echo 'yes' > /etc/pure-ftpd/conf/DontResolve </file> <note important>Изменение этого параметра в [[Ubuntu]] затронет лог-файл /var/log/syslog, а файл /var/log/auth.log не будет изменен, что важно при настройки [[Fail2ban]]. Fail2ban по умолчанию просматривает файл auth.log.</note> ====== Bind изменить IP,port ====== Для того чтобы задать определенный IP и/или порт нужно создать файл Bind, в котором через запятую указать IP и порт. Можно задать пустые значение, в этом случае будут использованы значения по умолчанию:<file bash> echo '10.26.95.227,21000' > /etc/pure-ftpd/conf/Bind </file> ====== Ссылки ====== * [[wpru>Pure-FTPd]] * [[Правила iptables для FTP]] * [[http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users|README.Virtual-Users]] * [[http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=31|Хранение аккаунтов pure-ftpd в файлах формата puredb]] ====== Настройка PureFtpd + MySql ====== * apt-get install pure-ftpd-common pure-ftpd-mysql * http://download.pureftpd.org/pure-ftpd/doc/README ===== Создание БД ===== * [[:pureftpd:db|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 ====== * [[:/etc/pure-ftpd/db/mysql.conf|/etc/pure-ftpd/db/mysql.conf]] ====== Настройка ====== Устанавливаем пакет «pure-ftpd-mysql». Настройка происходит с помощью индивидуальных файлов в /etc/pure-ftpd/conf. Название каждого файла отражает параметр, настройки которого он представляет. В содержимом файла представлены необходимые значения. <code> 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 </code> ===== Включить логирование ===== $ echo 'ftp' > /etc/pure-ftpd/conf/SyslogFacility $ echo 'yes' > /etc/pure-ftpd/conf/VerboseLog ====== PureFTP Complete Upload Script ====== После получения полностью залитого файла, скрипт переименует его в ended.<uploaded_filename>. <code> #!/bin/sh touch "$1.complete" </code> или <code> #!/bin/bash fullpath=$1 filename=$(basename "$1") dirname=${fullpath%/*} mv "$fullpath" "$dirname/ended.$filename" </code> ===== Конфигурция ===== Конфигурация осуществляется через базовый конфигурационный файл /etc/default/pure-ftpd-common Включает испльзование скрипта <code> $ sudo echo "yes" > /etc/pure-ftpd/conf/CallUploadScript </code> ===== Настройка pure-ftpd-common ===== <code> STANDALONE_OR_INETD=standalone VIRTUALCHROOT=false UPLOADUID= UPLOADGID= UPLOADSCRIPT=/etc/pure-ftpd/uploadscript.sh </code> ===== Проверка ===== <code> $ 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 </code>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal