Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: [HOWTO] FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10  (Прочитано 36245 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн victor53p

  • Автор темы
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 300
    • Просмотр профиля
    • Ubuntu в Воронежской области
FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10 (Gutsy Gibbon).
Мне этот сервер понравился больше всех ранее устанавливаемых.
Данный сервер поддерживает виртуальный хостинг, квоты и возможность управления скоростью раздачи.
Пользователи регистрируются в базе данных MySQL.
О самом сервере читаем здесь:
http://www.pureftpd.org/project/pure-ftpd
1. Замечание

Я устанавливал на своей машине для внутренней сети с именем ftpserver и IP адресом 192.168.1.10.
Естественно вы можете это изменить как вам необходимо, например с именем name.domain.ru и свой IP адрес.
Работал как root для чего ввел в консоли сл. команду:
sudo suДалее команды можете просто копировать и вставлять в командную строку консоли.
Я работал под Х-ми, использовал редактор gedit. В консоли можете использовать например редактор nano -w  или vi
Я буду показывать установку только необходимых для данного FTP сервера пакетов.
Если у вас уже установлен сервер LAMP, то добавьте только те, которые отсутствуют.

2 Установка MySQL сервера и пакета phpMyAdmin

Можете установить в консоле одной командой:

apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
Во время установки дайте следующие ответы:

Пароль для пользователя root для управления базой MySQL: <-- yourrootsqlpassword (введите ваш пароль)
Название вашего Web сервера (необходимо для правильной конфигурации MySQL). В данной версии Ubuntu это : <-- apache2
 
3 Установка PureFTPd сервера с поддержкой MySQL

В Ubuntu 7.10 такой пакет уже имеется в репозитарии, поэтому просто вводим команду:
apt-get install pure-ftpd-mysql
Далее создаем  ftp группу (ftpgroup) и ftp пользователя  (pureftp user),  которых будем использовать для всех ваших будущих виртуальных пользователей. Если в Вашей системе нет id номера 2001, то присваиваем этой группе и пользователю id 2001:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

4 Создаем  MySQL базу данных для PureFTPd сервера

Перед созданием непосредственно базы, создадим пользователя pureftpd с паролем ftpdpass который будет являться администратором нашей базы (pureftpd):
mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

Замените слово ftpdpass на свой пароль (этот, я использовал для примера, для пущей секретности можете менять и имя базы и имя пользователя).
Затем заходим в оболочку базы MySQL и копируем в командную строку ниже приведенные команды, затем нажимаем Enter (yes) для создания таблиц базы:

USE pureftpd;создаем:
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
Выходим:
quit;
Набрав в браузере команду http://192.168.1.10/phpmyadmin/ мы попадаем в гую пакета, с помощью которого можно администрировать базу данных вашего PureFTPd сервера.
 
5 Конфигурируем PureFTPd

Редактируем файл /etc/pure-ftpd/db/mysql.conf:
сохраняем старый:
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
обнуляем:
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
набираем:
gedit /etc/pure-ftpd/db/mysql.conf
и вставляем сл. строки:
MYSQLSocket      /var/run/mysqld/mysqld.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   ftpdpass
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

Строка MYSQLCrypt      md5
дает возможность переконвертировать текст пароля в  строку MD5 string, с целью секретности.

Далее создаем новый файл с именем /etc/pure-ftpd/conf/ChrootEveryone, содержащим одну строку со словом yes:

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
Это разрешит серверу PureFTPd изолировать каждого виртуального пользователя в его домашнем каталоге, в результате чего? он не сможет просматривать каталоги и файлы вне его домашнего каталога.

И еще создаем файл с именем /etc/pure-ftpd/conf/CreateHomeDir  с той же командой.

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Что позволит серверу PureFTPd автоматически создавать домашний каталог пользователя, при входе пользователя в систему, даже если домашний каталог еще не существует.

Затем перестартуем PureFTPd:

/etc/init.d/pure-ftpd-mysql restart
6 Создаем пробную базу для тестирования системы.

Для внесения содержания в базу заходим в оболочку MySQl:

mysql -u root -pЗатем вводим:
USE pureftpd;
Немного пояснений:
Новый пользователь создаваемый для тестирования FTP сервера будет имееть статус 1 (т.е. доступ активен)), он имеет (в моем примере) пароль secret (при внесении изменений в базу данных с помощью пакета phpmyadmin вы должны включить функцию MySQL's MD5),имеет так же UID и GID 2001 (см раздел №2!), домашнюю директорию /var/www, и скорость закачки (upload и download)  в 100 KB/sec. (kilobytes в second), а так же квоту (quota) в 50 MB:

Теперь сам код который вводим:

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/var/www', '100', '100', '', '*', '50', '0');

Выходим из оболочки:
quit;
Теперь открываем свой FTP клиент в компьютере (что-нибудь подобно WS_FTP или SmartFTP, если у вас Windows  или gFTP или FileZilla на Линуксе) и пробуем подключиться.
 Имя хоста которое при этом надо использовать- это имя вашей машины (или ее IP адрес), имя пользователя в моем примере является- exampleuser, а пароль- secret.

Каталог, который я прописал, это -  var/www. Для захода на мою страничку.
Вы можете использовать например свой реальный, типа- /home/www.example.com.

Для добавления пользователе можно продолжать как в командной строке, а можно с помощью phpmyadmin.

8 Создаем возможность логинится анонимным пользователям на наш FTP.

В начале оздаем пользователя ftp (с домашней папкой в  /home/ftp) и в группе ftp:

groupadd ftp
useradd -s /bin/false -d /home/ftp -m -c "anonymous ftp" -g ftp ftp

Затем создаем конфигурационный файл /etc/pure-ftpd/conf/NoAnonymous со строкой- no:

echo "no" > /etc/pure-ftpd/conf/NoAnonymous
С такой конфигурацией анонимные пользователи могут логинися к FTP серверу.

Делаем рестарт серверу PureFTPd:

/etc/init.d/pure-ftpd-mysql restart
Создаем для анонимных пользователей папку с различными правами, например:
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/

Про администрирование с помощью phpmyadmin это отдельный разговор, и там лучше с картинками.
Пока все.
Подсмотрено:
http://howtoforge.com/virtual-hosting-with-pureftpd-and-mysql-ubuntu-7.10
« Последнее редактирование: 10 Октябрь 2010, 01:05:45 от stmc »

Оффлайн Al77

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #1 : 05 Декабрь 2007, 17:26:17 »
Не судите строго..в линуксах неделю (установил сервер версию 7.10, теперь мучаю через патти)...все сделал по написаному(с поправками)...и все одно не могу войти на фтп
Цитировать
Подробности:
The connection with the server was reset
Сервер в локалке, база встала на ура, после рестарта фтп сервера пишет:
Цитировать
sudo /etc/init.d/pure-ftpd-mysql restart
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql -l mysql:/etc/pure-ftp
d/db/mysql.conf -l pam -j -O clf:/var/log/pure-ftpd/transfer.log -A -E -u 1000 -
B
. Так и должно быть?
В общем никак не выходит..сначало подумал что накосячил с доступом к каталогу(каталог - примонтированный диск в каталог /home/ftp, папка - раздел диска) с правами root:root...изменил права на ftpuser:ftpgroup, а внурти каталога почему то root:root(через mc смотрю), теперь не знаю куда ковырять дальше.
В общем хелп ми, плиз :)
« Последнее редактирование: 05 Декабрь 2007, 17:34:09 от Al77 »

Оффлайн victor53p

  • Автор темы
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 300
    • Просмотр профиля
    • Ubuntu в Воронежской области
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #2 : 06 Декабрь 2007, 09:34:47 »
Я по этой инструкции поднимал на 3 машинах, все нормально.Будь внимательней. Попробуй понять. пользователь для работы с базой данных и пользователь в базе данных который входит в группу и работает как пользователь ftp/
Да, так и должно.
Попробуй зайти:
ftp://user@localhost
где имя user-  имя твоего пользователя, которого ты определил для тестирования.

З.Ы. У нас должно быть два пользователя- один для того, что бы контактировать с базой данных, другой пользователь для работы с ftp.

 

Оффлайн Al77

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #3 : 06 Декабрь 2007, 13:59:16 »
Сервер: localhost   База данных: pureftpd   Таблица : ftpd
Пользователь для MySQL pureftpd    localhost
                                     pureftpd    localhost.localdomain
Для подключения к ftp        kvant 1 *** 2001   2001(ну настройки остальные)
С удаленной и локальной машины не идет ни в какую(ftp://kvant:pass@192.168.0.200)
Уже и вэб управление пытался поставить-результат тот же...
через phpmyadmin с этим логином зайти не могу(может здесь заковыка)...хотя насколько понимаю и не должно)
« Последнее редактирование: 06 Декабрь 2007, 15:11:05 от Al77 »

Оффлайн victor53p

  • Автор темы
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 300
    • Просмотр профиля
    • Ubuntu в Воронежской области
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #4 : 07 Декабрь 2007, 11:04:00 »
Попробуй в этом файле
gedit /etc/pure-ftpd/db/mysql.conf
поставить MYSQLUser  root  и его пароль MYSQLPassword
потом дальше двигаться будешь

Оффлайн Al77

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #5 : 07 Декабрь 2007, 16:41:16 »
К сожалению не пошло...и не понятно получается ли присоединиться к базе...логи пока читать не особо умею(
Блин..где же накосячил...дома на ВМ сделал все один к одному, как выше написано...результат - работает. :-\
Еще вопрос, UID и GID у всех новых пользователей(в базе) одинаковый должен быть?

На работе не идет((((((((((((((
Цитировать
Для столбца `User` нельзя одновременно создавать индексы типа PRIMARY и INDEX
До сих пор борюсь - никаких продвижений :(
« Последнее редактирование: 10 Декабрь 2007, 19:46:11 от Al77 »

Оффлайн Uzwer

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #6 : 10 Декабрь 2007, 17:32:07 »
Огромное спасибо за инструкцию по настройке, в принципе все получилось. Однако при соединении по фтп в директорию не разрешает писать. С linux работаю первый раз, задача на данный момент настроить веб сервер с возможностью работать с ним по фтп, и развернуть на нем копию сайта для экспериментов.
Я поставил Ubuntu-7.10 server i386.

Оффлайн vadim-nsk

  • LoCo команда
  • Старожил
  • *
  • Сообщений: 1318
  • Жить надо так, как горит пламя!
    • Просмотр профиля
    • Linux в Новосибирске
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #7 : 11 Декабрь 2007, 11:37:50 »
Огромное спасибо за инструкцию по настройке, в принципе все получилось. Однако при соединении по фтп в директорию не разрешает писать. С linux работаю первый раз, задача на данный момент настроить веб сервер с возможностью работать с ним по фтп, и развернуть на нем копию сайта для экспериментов.
Я поставил Ubuntu-7.10 server i386.

вот в инструкции внизу приведены строчки

Цитировать
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/

Они как раз определяют права. Т.е. все зависит от того, какие права вы определили.

Оффлайн Al77

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #8 : 11 Декабрь 2007, 15:00:54 »
Виктор, никак не выходит..уже и на чистую систему ставил - результат тот же...в чем может быть проблема? скажить какие логи прикрепить, посмотреть чтоб понять ошибки..
« Последнее редактирование: 11 Декабрь 2007, 15:07:50 от Al77 »

Оффлайн vadim-nsk

  • LoCo команда
  • Старожил
  • *
  • Сообщений: 1318
  • Жить надо так, как горит пламя!
    • Просмотр профиля
    • Linux в Новосибирске
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #9 : 11 Декабрь 2007, 15:18:36 »
Виктор, никак не выходит..уже и на чистую систему ставил - результат тот же...в чем может быть проблема? скажить какие логи прикрепить, посмотреть чтоб понять ошибки..

Посмотрите, что мускл выдает, когда кто-нибудь пытается приконнектиться, если дело в нем - дома с виртуалки попробуйте экспортировать базу данных, а на реальной машине импортировать. меня в данной схеме смущает кое что на счет кодировок. у меня правда все нормально.

Оффлайн Al77

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #10 : 11 Декабрь 2007, 16:18:38 »
Цитировать
Посмотрите, что мускл выдает, когда кто-нибудь пытается приконнектиться, если дело в нем - дома с виртуалки попробуйте экспортировать базу данных, а на реальной машине импортировать. меня в данной схеме смущает кое что на счет кодировок. у меня правда все нормально.

Попробую такой вариант...и вопрос сразу - Какая кодировка должна быть?
Стараюсь везде выставлять UTF-8
Сейчас в базе - MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_unicode_ci
---
И еще глупый вопрос)) Где же посмотреть логи соединения с mysql
-------------------
К сожалению не пошло...и как все же посмотреть происходит ли соединение с mysql???
Filezilla вот что пишет:
Статус:   Соединяюсь с 192.168.0.200:21...
Статус:   Соединение установлено, ожидание приглашения...
Ошибка:   Не могу соединиться!
« Последнее редактирование: 12 Декабрь 2007, 12:37:09 от Al77 »

Оффлайн Uzwer

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #11 : 14 Декабрь 2007, 11:45:00 »
Огромное спасибо за инструкцию по настройке, в принципе все получилось. Однако при соединении по фтп в директорию не разрешает писать. С linux работаю первый раз, задача на данный момент настроить веб сервер с возможностью работать с ним по фтп, и развернуть на нем копию сайта для экспериментов.
Я поставил Ubuntu-7.10 server i386.

вот в инструкции внизу приведены строчки

Цитировать
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/

Они как раз определяют права. Т.е. все зависит от того, какие права вы определили.
Огромное спасибо разобрался.  :)

Оффлайн victor53p

  • Автор темы
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 300
    • Просмотр профиля
    • Ubuntu в Воронежской области
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #12 : 15 Декабрь 2007, 09:58:39 »
Для работы  c localhost. Т.e. на домашней машине не надо заморачиваться и создавать отдельного пользователя MySQL. Пусть будет root.
Управлять phpmyadmin через root  и с базой данных работать через root.
Для хостинга, там на каждую базу свой пользователь.
Когда все пойдет, тогда двигаться далее.
Идея работы с любым движком, где есть база данных.
 Мы должны понимать следующее. Движок или сервис или служба использующая базу, с базой работает со своим узером и паролем, а с самим движком, службой или сервисом со своим узером и паролем!
« Последнее редактирование: 15 Декабрь 2007, 10:02:08 от victor53p »

Оффлайн nucleartux

  • Участник
  • *
  • Сообщений: 176
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #13 : 18 Декабрь 2007, 18:08:30 »
большое спс за понятный howto

Оффлайн Al77

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: HOWTO: FTP сервер на базе PureFTPd и MySQL на Ubuntu 7.10
« Ответ #14 : 24 Декабрь 2007, 15:31:03 »
Эх...полный ЭХ
Все у всех получается, а у меня совсем не идет
И в phpmyadmin в процессах не видно коннекта...
попробовал через ssh, под пользователем pureftpd нормально заходит в базу и в процессах становится видно, т.е. по идее к базе конектится, но как такового процесса pure* нет вообще.
На
Цитировать
netstat -tap | grep pure-ftpd
- полный ноль реакции
где могут быть грабли то..подскажите плиз..
« Последнее редактирование: 24 Декабрь 2007, 15:53:25 от Al77 »

 

Страница сгенерирована за 0.061 секунд. Запросов: 24.