Эта документация описывает, как установить PureFTPd сервере, который использует виртуальных пользователей из базы данных MySQL вместо реальных пользователей системы. Это гораздо более удобно, быстрее и позволяет иметь тысячи FTP пользователей на одной машине. В дополнение к этому, в этой установке я продемонстрирую использование квот и пределы полосы пропускания прием / отдача. Пароль будет хранится в зашифрованном виде строкой MD5 в базе данных.
Для администрации базы данных MySQL вы можете использовать веб-инструменты, такие как PhpMyAdmin, который также будет установлен в этом документе. PhpMyAdmin является удобным графическим интерфейсом, это означает, что Вам не придется возиться с командной строкой.
Этот учебник основан на Ubuntu 10.10. Вы уже должны были создать основу системы Ubuntu server 10.10, как описано в первых восьми главах материала: идеальный сервер ISPConfig 2 на Ubuntu server 10.10.
Этот материал предназначен в качестве практического руководства, она не охватывает теоретические основы. Так как они рассматриваются во многих других документах Интернета. Это не единственный способ создания такой системы. Есть много способов достижения этой цели, но это, как один из них.
Предварительные замечания
В данной статье я использую имя хоста ubuntu с IP-адреса 192.168.1.118. Эти параметры могут отличаться в Вашем случае, поэтому Вам придется заменить их в случае необходимости.
Убедитесь, что вы вошли в систему как суперпользователь (root):
|
Данная команда используется для того что бы стать администратором так как, мы должны выполнить все шаги из этого учебника, как root пользователь.
Установка MySQL и PhpMyAdmin
Все это может быть установлено одной командой:
|
Вам будут предложено ответить на следующие вопросы:
Новый пароль для MySQL "root" пользователя: - root пароль на SQL Повторите пароль для MySQL "корень" Пользователь: - root пароль на SQL Веб-сервер для перенастройки автоматически: - apache2 Настройка базы данных для PhpMyAdmin с dbconfig-common? - нет
Установка PureFTPd с поддержкой MySQL
Для Ubuntu 10.10 имеется пакет уже предварительно настроенный pure-ftpd-mysql. Установить это так:
|
Затем мы создаем FTP группы ( ftpgroup ) и пользователей ( ftpuser ), что бы все наши виртуальные пользователи будут сопоставлены. Заменить группы и идентификаторы с числом 2001, которое свободно в Вашей системе:
|
Создание базы данных MySQL для PureFTPd
Сейчас мы создадим базу данных под названием PureFTPd и пользователем MySQL с именем PureFTPd который будет использовать в дальнейшем демон PureFTPd для подключения к PureFTPd базы данных:
|
Заменим строку ftpdpass ни любой пароль, который Вы хотите использовать для пользователя MySQL PureFTPd . Тем не менее в оболочке MySQL, мы создаем базу данных таблицы нужную нам (да, есть только одна таблица!):
|
Между прочем, (предпологая, что имя хоста Вашей системы / сервера FTP является ubuntu ) Вы можете получить доступ к PhpMyAdmin перейдя по ссылке в интернет обозревателе персонального компьютера по ссылке http://ubuntu/phpmyadmin/ (вы можете также использовать IP адрес вместо ubuntu ) в браузер и войдите в систему как пользователь PureFTPd . Тогда вы сможете посмотреть на базу данных http://IP/phpmyadmin/. Позже вы сможете использовать PhpMyAdmin для администрирования вашего PureFTPd сервера.
Настройка PureFTPd
Изменим /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")
Убедитесь, что вы заменили строку ftpdpass с реальным паролем для пользователя MySQL PureFTPd в строке MYSQLPassword! Пожалуйста, обратите внимание, что мы используем метод md5 MYSQLCrypt, который означает, что мы будет хранить пользователей и пароли в базе данных как строки MD5, которая является гораздо более безопасным, чем при использовании обычного текстового пароля!
Затем создадим файл /etc/pure-ftpd/conf/ChrootEveryone который просто содержит строку yes:
|
Это позволит сделать PureFTPd изолированной для каждого виртуального пользователя в его домашнем каталоге, чтобы он нельзя было просматривать каталоги и файлы, находящиеся вне его каталога. Также создадим файл /etc/pure-ftpd/conf/CreateHomeDir что опять-таки просто содержит строку yes:
|
Это позволит PureFTPdсоздавать домашний каталог пользователя при входе пользователя в систему даже если каталог еще не существует.
Наконец создаем файл /etc/pure-ftpd/conf/DontResolve что опять-таки просто содержит строки yes:
|
Это позволит PureFTPd не искать имена хостов, которые могут значительно ускорить процесс соединения и сократить использование пропускной способности.
После этого мы перезапустим :
|
Проверка MySQL
Для проверки перейдем в интернет обозревателе персонального компьютера по ссылке http://ubuntu/phpmyadmin/ (вы можете также использовать IP адрес вместо ubuntu ) в браузер и войдите в систему как пользователь PureFTPd . Тогда вы сможете посмотреть на базу данных http://IP/phpmyadmin/.
Позже вы сможете использовать PhpMyAdmin для администрирования вашего PureFTPd сервера.
Заполнения базы данных и тестирование
Для заполнения базы данных Вы можете использовать оболочку MySQL:
|
Теперь мы создадим пользователя exampleuser со статусом 1 (что означает его FTP счет активный), secret пароль (который будет храниться в зашифрованном виде с использованием MD5 функции в MySQL), UID и GID 2001 (используется идентификатор пользователя и GROUPID на пользователя / группы, созданной в конце второго шага), каталог /home/www.example.com , выгрузки и загрузки с пропускной способностью 100 КБ/сек. (Килобайт в секунду), и квота 50 Мб:
|
Теперь откройте ваш FTP-клиент программы на вашем рабочем месте (что-то вроде FileZilla, WS_FTP, SmartFTP или gFTP) и попытаться подключиться. Как вы используете имя хоста ubuntu (или IP-адрес из системы), имя пользователя является exampleuser и пароль secret.
Если вы сможете подключиться - поздравляем! Если нет, то что-то пошло не так.
Теперь, если вы выполните:
|
Вы должны увидеть, что директория /home/www.example.com была автоматически создана, и она принадлежит ftpuser и ftpgroup (пользователя / группы мы создали в конце второго шага):
root@ubuntu:/home/llirikks# ls -l /home итого 8 drwxr-xr-x 3 llirikks llirikks 4096 2011-01-24 20:48 llirikks drwxr-xr-x 2 ftpuser ftpgroup 4096 2011-01-24 21:22 www.example.com root@ubuntu:/home/llirikks#
Администрирование баз данных
Для большинства людей легче, пользоваться графическим интерфейсом MySQL, поэтому Вы можете также использовать PhpMyAdmin (в данном примере под http://ubuntu/phpmyadmin/ или ) для администрирования базы данных PureFTPd.
Всякий раз, когда Вы хотите создать нового пользователя, Вы должны создать запись в таблице FTPD. Здесь я объясню столбцы этой таблицы:
FTPD таблица
- User : имя виртуального пользователя PureFTPd (например exampleuser ).
- status : 0 или 1. 0 означает, что учетная запись отключена, пользователь не может Войти.
- Password : пароль виртуального пользователя. Убедитесь, что вы используете в MySQL функция MD5, чтобы сохранить пароль зашифрован как строки MD5:
- Uid : идентификатор пользователя FTP-пользователя, созданной в конце шага два (например, 2001 ).
- Gid : GROUPID из FTP группы, созданной в конце шага два (например, 2001 ).
- Dir : домашний каталог виртуального пользователя PureFTPd (например, / главная / www.example.com ). Если она не существует, он будет создан, когда новый пользователь регистрируется в первый раз через FTP. Виртуального пользователя будет тюрьму в этот домашний каталог, т. е. он не может получить доступ к другим директориям за пределами его домашний каталог.
- ULBandwidth : Добавлено пропускную способность виртуального пользователя в КБ / сек. (Килобайт в секунду). 0 означает неограниченное.
- DLBandwidth : Скачать пропускную способность виртуального пользователя в КБ / сек. (Килобайт в секунду). 0 означает неограниченное.
- comment : Вы можете ввести любые комментарии здесь (например, для внутренней администрации) здесь. Обычно вы оставите это поле пустым.
- ipaccess : введите IP-адреса здесь, которым разрешено подключаться к этой учетной записи FTP. * означает любой IP-адреса допускается, чтобы связаться.
- QuotaSize : складские помещения в МБ (не КБ, как и в ULBandwidth и DLBandwidth !) виртуальный пользователь имеет право использовать на сервере FTP. 0 означает неограниченное.
- QuotaFiles : количество файлов, виртуального пользователь может сохранить на сервере FTP. 0 означает неограниченное.
Аноним FTP
Если Вы хотите создать учетную запись анонимного FTP (внимание, любой пользователь FTP может войти без пароля), Вы можете сделать это следующим образом:
Сначала создайте пользователей FTP (с домашним каталогом /home/ftp ) и группу FTP :
|
Затем создайте файл /etc/pure-ftpd/conf/NoAnonymous, который содержит строку no :
|
В этой конфигурации, PureFTPd позволит анонимных пользователей.
Перезагрузите PureFTPd:
|
Затем мы создаем каталог /home/ftp/incoming, который позволят анонимным пользователям загружать файлы. Мы дадим каталогу /home/ftp/incoming разрешения 311, так что пользователи могут загружать, но не видят или скачивают любые файлы в этом каталоге. /home/ftp каталог будет иметь права доступа 555 , который позволяет видеть и загружать файлы:
|
Теперь анонимные пользователи могут Логин, и они могут скачивать файлы из /home/ftp , но закачки ограничены /home/ftp/incoming (и как только файл будет загружен в /home/ftp/incoming, он не может быть прочитан, для загрузки, администратор сервера должен переместить его в /home/ftp, чтобы сделать его доступным для других).