Pure-FTPd является свободным (BSD), безопасным, производственно-качественным и стандарт-совместимым FTP -сервером, который активно поддерживается и разработан с учетом требований безопасности. Он фокусируется на эффективности, простоте использования и предоставляет простые решения, плюс уникальные полезные функции для персональных пользователей, особенно на серверах Linux VPS, а также для хостинг -провайдеров. Pure-FTPd даже может работать 100% без root, с его встроенным root() эмуляцией и виртуальных аккаунтов.
На этом уроке мы покажем вам, как настроить Pure-Ftpd так, что он использует виртуальных пользователей из базы данных MySQL вместо реальных пользователей системы. Эта конфигурация является гораздо более производительным и позволит вам иметь тысячи пользователей FTP на одном сервере.
Мы также установим PhpMyAdmin для того, чтобы легко администрировать созданные базы данных.
Обновим систему
Войдем на сервер как пользователь “root” и убедимся, что ваш OpenSUSE VPS полностью обновлен:
ssh root@hostname zypper ref zypper up
Установим apache2, MariaDB (MYSQL) и PhpMyAdmin
Установка Apache2, MariaDB и PhpMyAdmin с соответствующими зависимостями с помощью следующей команды:
zypper install mariadb mariadb-client apache2 apache2-mod_php5 php5-mysql php5-mcrypt php5-mbstring php5-gd
Запустить и добавить MariaDB к загрузке вашей системы:
chkconfig -a mysql systemctl start mysql.service
Мы рекомендуем Вам запустить mysql_secure_installation и завершим установку MariaDB:
mysql_secure_installation
Создание автозапуска системы ссылки для Apache (так, чтобы он автоматически запускается всякий раз, когда загружается система) и запустим его с помощью следующих команд:
systemctl enable apache2.service systemctl start apache2.service
Затем установите PhpMyAdmin:
zypper install phpmyadmin
Чтобы получить доступ к PhpMyAdmin вам нужно изменить файл /etc/apache2/conf.d/phpMyAdmin.conf используя текстовый редактор и добавить следующие строки в самом начале файла:
vim /etc/apache2/conf.d/phpMyAdmin.conf Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin
Перейдите в каталог PhpMyAdmin и включите файл в config.inc.php:
cd /srv/www/htdocs/phpMyAdmin cp config.sample.inc.php config.inc.php
Файл config.inc.php ожидает существующую базу данных PhpMyAdmin. С помощью следующих команд вы можете создать базу данных PhpMyAdmin и импортировать таблицы по умолчанию из PhpMyAdmin:
echo "create database phpmyadmin;" | mysql -u root -p 'yourpassword' mysql -u root -p 'yourpassword' < /usr/share/doc/packages/phpMyAdmin/examples/create_tables.sql
Перезапустите Apache:
systemctl restart apache2.service
Теперь вы можете использовать ваш веб-браузер и PhpMyAdmin доступа путем перехода http://your_IP_address/phpmyadmin или http://yourdomain/phpmyadmin. Вы увидите страницу приветствия:
УСТАНОВИТЬ PURE-FTPd
Теперь установите PureFTPd, выполнив следующую команду:
zypper install pure-ftpd
Затем создайте FTP группу и пользователей, все виртуальные пользователи будут сопоставлены:
groupadd -g 2525 ftpgroup useradd -u 2525 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
Следующее, что вам нужно сделать, это создать базу данных для PureFTPd. Войдите в MySQL как root:
mysql -u root -p MariaDB [(none)]> CREATE DATABASE pureftpd; MariaDB [(none)]> GRANT ALL PRIVILEGES on pureftpd.* TO 'ftpuser'@'localhost' IDENTIFIED BY 'your_password'; MariaDB [(none)]> FLUSH PRIVILEGES;
Замените строку your_password на пароль по своему вкусу.
В то время как вы все еще в MySQL давайте создадим таблицу базы данных, необходимую для хранения виртуальных учетных данных пользователей. Введите следующее:
MariaDB [(none)]> USE pureftpd; MariaDB [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) ) ENGINE=InnoDB; MariaDB [pureftpd]> exit
Все выглядит нормально пока. Давайте изменим конфигурационный файл PureFTPd с некоторыми рекомендованными изменениями. С помощью текстового редактора откройте файл etc/pure-ftpd/pure-ftpd.conf:
vim etc/pure-ftpd/pure-ftpd.conf
Оказавшись там, убедитесь, что линии ChrootEveryone, AnonymousOnly, MySQLConfigFile и CreateHomeDir включены и выглядит следующим образом:
Установка ChrootEveryone необходима потому, что он будет делать PureFTPd root каждый виртуальный пользователь в своем домашнем каталоге, тем самым ограничивая его просмотр каталогов и файлов только в его домашнем каталоге. CreateHomeDir линия позволит PureFTPd создать домашний каталог пользователя, когда пользователь входит в систему и домашний каталог еще не существует. AnonymousOnly должен быть установлен на нет, потому что в противном случае только анонимные сеансы FTP будут разрешены.
Затем создайте/отредактируйте файл /etc/pure-ftpd/pureftpd-mysql.conf:
vim /etc/pure-ftpd/pureftpd-mysql.conf
И вставьте следующее:
MYSQLSocket /var/run/mysql/mysql.sock MYSQLServer localhost MYSQLPort 3306 MYSQLUser ftpuser MYSQLPassword your_password 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")
Заменим строку ваш_пароль реальным паролем для пользователя ftpuser MySQL в строке MYSQLPassword. Мы будем использовать md5 как метод MYSQLCrypt, что означает, что MySQL будет хранить пароли пользователей в виде строки MD5 в базе данных, которая является гораздо более безопасным, чем использование простых текстовых паролей.
Теперь мы создадим ссылки для запуска системы PureFTPd и запустим его:
systemctl enable pure-ftpd systemctl start pure-ftpd
Давайте заполним базу данных с помощью оболочки MySQL. Войдите в систему как root:
mysql -u root -p MariaDB [(none)]> USE pureftpd; MariaDB [pureftpd]> INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('testuser', '1', MD5('AndreyEx'), '2525', '2525', '/home/www.examledomain.ru', '200', '200', '', '*', '10', '0'); MariaDB [pureftpd]> exit;
Это утверждение MySQL создаст пользователя TestUser со статусом 1 (что означает, что FTP активен) и пароль andreyex (вы должны изменить его по своему вкусу). Пароль будет храниться и шифроваться с помощью функции MD5 в MySQL, идентификатор пользователя и GID будут установлены в 2525 (пользователь / группа, которую мы создали для виртуальных пользователей, которые будут отображаться), домашний каталог будет /home/www.examledomain. ru, выгрузка and download bandwidth будет установлена на 200 кб / сек. (килобайт в секунду), наряду с квотой 100 МБ.
Для проверки конфигурации откройте FTP-клиент из вашего выбора и введите следующие учетные данные:
hostname : your IP address; user: testuser password: yourpassword port: 21
Все. Мы успешно установили и настроили Pure-Ftpd так, что он использует виртуальных пользователей из базы данных MySQL. Вы можете управлять базами данных и добавлять новых пользователей с помощью инструмента PhpMyAdmin.
PS . Если вам понравился этот пост, пожалуйста поделитесь им с друзьями в социальных сетях помощью кнопок на левой стороне поста или просто оставьте комментарий ниже. Заранее благодарю.