Установка и настройка pure-ftpd с поддержкой MySQL

Знаю что подобного мануала в сети немало, но во всех вариантах мне не понравилось повторяющаяся ошибка для запроса в мускул

DLBandwidth int(11) NOT NULL default ‘128′,
– ограничение скорости на download (в Kb/s);
DLBandwidth int(11) NOT NULL default ‘128′,
– ограничение скорости на upload (в Kb/s);

Нестыковочку видете? ;) Такое ощущения что авторы русского варианта тупо перевели английский вариант и никогда его не ставили.. Вот поэтому я и решился написать рабочую версию мануала с рабочего сервера.

Итак, погнали…

Где скачать и как распаковать pure-ftpd я писать не буду. Заходим в распакованный архив и конфигурируем

./configure   –with-altlog –with-quotas –with-mysql –with-throttling  –with-peruserlimits  –with-ratios

Сразу разберём параметры конфигурации.

–with-altlog – используем журналирование

–with-quotas – поддержка квоты.

–with-peruserlimits — позволяет задавать ограничения для каждого пользователя

–with-throttling — позволяет установить ограничение скорости работы с ftp для пользователей

–with-ratios — позволяет установить соотношение download/upload для пользователей

После всего конфигурации выполняем

make

Затем

make install

Если ошибок нет, значит установка прошла удачно.

Далее нам необходимо создать каталоги для хранения файлов.

mkdir ftp
mkdir /ftp/pub
mkdir /ftp/incoming

Создадим пользователя ftp и назначим ему домашнюю директорию /ftp.

groupadd ftp
useradd -d /ftp -g ftp -s /bin/false ftp

Назначим права на директории incoming и pub

chmod -R 0777 /ftp/incoming
chmod -R 0755 /ftp/pub

Для работы с базой данных mysql понадобится файл конфигурации pureftpd-mysql.conf

Его копируем из директории с распаковаными исходниками в /etc

Далее привожу полный рабочий конфиг pureftpd-mysql.conf

MYSQLServer 127.0.0.1
MYSQLPort 3306
MYSQLSocket /tmp/mysql.sockMYSQLUser ftp
MYSQLPassword ftp
MYSQLDatabase ftp

MYSQLCrypt cleartext   #Может принимать значения  “cleartext”, “crypt”, “md5″ и “password”

#Запрос на получения пароля

MYSQLGetPW SELECT Password FROM users WHERE User=”\L”
# Запросов на получение системного имени пользователя, или UID
MYSQLGetUID SELECT Uid FROM users WHERE User=”\L”
# Опционально: default UID вместо запроса на его извлечение MYSQLGetUID
#MYSQLDefaultUID 1000
# Запрос на получение имени группы или gid
MYSQLGetGID SELECT Gid FROM users WHERE User=”\L”
# Опционально: default GID – вместо запроса MYSQLGetGID
#MYSQLDefaultGID 1000
# Запрос на получения домашней директории
MYSQLGetDir SELECT Dir FROM users WHERE User=”\L”
# Опционально: Запрос на максимальное число файлов у пользователя
# Pure-FTPd должен был собран с поддержкой виртуальных квот.
# MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User=”\L”
# Опционально: запрос на квоту использования диска (виртуальных квот)
# Число должно быть в мегабайтах.
# Pure-FTPd должен был собран с поддержкой виртуальных квот.
# MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User=”\L”
# Опционально: Коэффициенты. Запросы на соотношение download/upload.
# Сервер должен быть собран с ratio поддержкой.
# MySQLGetRatioUL SELECT ULRatio FROM users WHERE User=”\L”
# MySQLGetRatioDL SELECT DLRatio FROM users WHERE User=”\L”
# Опционально: Полосой пропускания для пользователя. Сервер должен быть
# собран с throttling опцией. Значение в KB/s .
# MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User=”\L”
# MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User=”\L”
# Разрешить расширение “~” . НИКОГДА не делайте этого, если:
# 1) Вы точно знаете что делаете.
# 2) Совпадают реальные и виртуальные юзеры.
# MySQLForceTildeExpansion 1
# MySQLTransactions On

Теперь создадим базу данных:

mysql> CREATE DATABASE ftp;

Назначим права на базу для пользователя “ftp” с паролем “ftp”

mysql> GRANT ALL PRIVILEGES ON ftp.* TO ftp@localhost IDENTIFIED BY ‘ftp’;

mysql> CREATE TABLE users (
User varchar(16) NOT NULL default ”,
– логин пользователя;
Password varchar(64) NOT NULL default ”,
– пароль пользователя;
Uid int(11) NOT NULL default ‘10000′,
– uid пользователя;
Gid int(11) NOT NULL default ‘10000′,
– gid пользователя;
Dir varchar(128) NOT NULL default ”,
– директория пользователя;
UserIP varchar(15) NOT NULL default ”,
– ip, с которого может подключаться пользователь;
ServerIP varchar(15) NOT NULL default ”,
– ip сервера, на который может подключаться пользователь;
QuotaSize int(11) NOT NULL default ‘5′,
– квота пользователя (в MB);
ULBandwidth int(11) NOT NULL default ‘128′,
– ограничение скорости на download (в Kb/s);
BLBandwidth int(11) NOT NULL default ‘128′,
– ограничение скорости на upload (в Kb/s);
ULRatio int(11) NOT NULL default ‘1′,
DLRatio int(11) NOT NULL default ‘1′,
PRIMARY KEY (User)
);

Запустим Pure-Ftpd

/usr/local/sbin/pure-ftpd -B -A -f none -E -4 -H -U 133:022 -8 UTF-8 -9 cp1251
-p 30000:50000 -l mysql:/etc/pureftpd-mysql.conf -l unix

Проверим поднялся ли демон через:  ps ax | grep pure-ftpd

Всё работает, теперь неплохо чтобы сервер стартовал при запуске системы.

Я рекомендую свой файл конфигурации для старта системы.

Создайте файл

touch/etc/pure-ftpd.conf

Отредактируйте его добавив в него следующее:

# Режим демона
-B
# Запирать пользователя в домашний каталог (chroot everyone)
-A
# Отключаем логирование
-f none
# Вместо стандартного, создаём альтернативный лог-файл в формате типа “apache”
-O clf:/var/log/pure-ftpd.log
# Подключаем MySQL
-l mysql:/etc/pureftpd-mysql.conf -l unix
# Запрещаем анонимный вход
-E
# Диапазон портов для пассивного соединения
-p 30000:50000
# Версия сетевого протокола, в нашем случае ipv4only
-4
# Не резольвить имена хостов в логах.
-H
# Маска для копируемых файлов и создаваемых директорий
-U 133:022
# Конвертируем кодировку на лету (для клиентов под Windows)
-8 UTF-8
-9 cp1251

Теперь необходимо в папке /etc/init.d (в различных ОС может быть /etc/rc.d) создать файл pureftpd.sh и добавьте в него следующее:

#!/bin/sh
#

CONF=/etc/pure-ftpd.conf
ARGS=$(sed -e ‘/^\s*$/d’ -e ‘/^#/d’ $CONF)

s=$1
if [ -z "$s" ]; then s=”start”; fi;

case $s in
start)
/usr/local/sbin/pure-ftpd $ARGS
;;
stop)
killall -q /usr/local/sbin/pure-ftpd
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo “usage: $0 [start|stop|restart]”
;;
esac

# End of file

Всё.. отправляйтесь в базу данных, создавайте пользователей. Не забудьте в фаерволе открыть порты 21, 30000-50000.


Ваш отзыв



Навигация

Поиск

Архив

Январь 2010
Пн Вт Ср Чт Пт Сб Вс
« Дек   Фев »
 123
45678910
11121314151617
18192021222324
25262728293031

Ссылки

Активировать Windows 7 Билл Гей-тс Сравнение для новичков лицензионное ПО проброс портов 3G 4G Azbox Elit Ericsson External Port Start FoxGate WER-301 hiberfil.sys Linux Microsoft powercfg PSK RTM Samsung USB-модем uTorrent Virtual Server WGA Notifications WiFi Windows 7 взломали Windows Genuine Advantage Windows XP WPA/WPA2 WPA Cracker

Unix (4)
Web программинг (3)
Windows (3)
Железо (5)
Настройка (4)
Пиратские новости (10)
Разное (5)
Юмор (3)

Для для просмотра облака тэгов требуетсяFlash Player 9 или выше.

Подписка

Статистика

  • Сайты Одессы