HowTo: служба FTP с использованием базы данных MySQL

Несмотря на некоторую неопределенность, которая может окружать MySQL, лично я все же предпочитаю работать с этой БД, а не с какой-то другой. Я ничего не имею против Postgre, я просто всю жизнь использовал MySQL, и до сих пор у меня не было причин пересматривать его использование.

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

Почему это так?

Просто, потому что при создании резервной копии, переустановке сервера или любых других значительных изменениях перемещение службы будет таким же простым, как копирование файла конфигурации и экспорт базы данных MySQL на FTP.

Для этого мы будем использовать Pure-FTPd, ну ... приступим 🙂

Установка службы FTP с Pure-FTPd

1. Первое, что нужно сделать, это установить пакет: чистый ftpd-mysql

В таких дистрибутивах, как Debian или производные: aptitude установить чистый ftpd-mysql

2. После установки мы запустили службу, но должны ее остановить, чтобы остановить ее в таких системах, как Debian или производных, достаточно:

/etc/init.d/pure-ftpd-mysql stop

Однако я оставляю вам строку, которая остановит службу независимо от того, какой дистрибутив вы используете:

ps ax | grep pure | grep -v grep | awk '{print $1}' | xargs kill

Если вы хотите подробно разобраться в этой строке, прочтите Эта статья

Подготовка условий на сервере MySQL

Не так давно я уже объяснял, как создать базу данных, пользователя и дать этому пользователю права в базе данных: Пользователи и разрешения в MySQL

Перейдем к тому, что мы здесь будем делать? ...

1. Да, мы создадим базу данных, но сначала мы обратимся к MySQL:

mysql -u root -p

Здесь они вводят пароль root, и они получают доступ к терминалу MySQL.

2. Оказавшись внутри MySQL, мы переходим к созданию базы данных myftpdb:

CREATE DATABASE myftpdb;

Обратите внимание на точку с запятой «;»В конце строки.

3. Теперь создадим пользователя myftpuser и мы дадим разрешения на использование пользователя в базе данных, которую мы только что создали, этот пользователь будет иметь пароль myftppassword:

CREATE USER 'myftpuser'@'localhost' IDENTIFIED BY 'myftppassword';
GRANT ALL PRIVILEGES ON myftpdb.* TO 'myftpuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES ;

4. Готово, мы создали базу данных, пользователя и установили права доступа. Теперь мы должны импортировать базу данных по умолчанию (или чистую), чтобы это было завершено. Для этого сначала выйдем из MySQL:

exit;

Теперь давайте загрузим базу данных по умолчанию, которую я вам предлагаю:

Скачать БД по умолчанию

Или на сервере используйте следующую строку:

wget http://ftp.desdelinux.net/myftpdb.sql

Готово, он у нас уже есть на нашем сервере, осталось только импортировать ваши данные:

mysql -u root -p myftpdb < myftpdb.sql

И готово!

Они также могут использовать некоторые веб-приложения, например Администратор o PHPMyAdmin для импорта базы данных оставляю на вкус.

5. И все это для того, чтобы условия нашего MySQL были готовы.

Связывание FTP с MySQL

Что ж, у нас уже установлена ​​служба FTP, установлена ​​служба MySQL и установлена ​​наша база данных ... теперь нам просто нужно, присоединиться к службе FTP с MySQL.

1. Сначала мы должны загрузить файл конфигурации, который мы будем использовать для вышеупомянутого. В серверном терминале поместим следующую строку:

cd /etc/pure-ftpd/ && wget http://ftp.desdelinux.net/pure-ftpd-mysql.conf

2. Теперь мы запускаем службу FTP, сообщающую ей использовать для аутентификации пользователей MySQL, а также укажем, какой файл конфигурации использовать для подключения к MySQL:

pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf

И вуаля

Этого достаточно, чтобы установить собственный FTP-сервер с аутентификацией по базе данных MySQL.

Если вы хотите, чтобы всякий раз, когда сервер запускался автоматически, он запускал службу FTP, вы должны поместить в файл /etc/rc.local строка, которую мы используем для выполнения FTP, то есть вставляем /etc/rc.local это:

pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf

Кстати, вы можете получить доступ к FTP с помощью любого браузера, а также с помощью FTP-клиентов, таких как Filezilla ... и не только это, используя файловые браузеры, такие как Nautilus, Dolphin или PCManFM, вы также можете загружать и выгружать файлы 😀

Тестовый пользователь, который находится в базе данных

Имя пользователя: TestUser

Пароль: testpassword

Как управлять пользователями FTP?

Что ж, учитывая, что это база данных MySQL, как я сказал выше ... использования PHPMyAdmin или Adminer будет достаточно. Просто используйте ваше любимое приложение для управления базой данных, которая содержит одну таблицу: пользователей … И в нем пользователи, вот скриншот: Если вы хотите создать нового пользователя, вы можете продублировать или клонировать существующую строку и изменить данные, которые будут разными для обоих пользователей, здесь я покажу вам снимок экрана: Ну ... больше нечего добавить 🙂

Я надеюсь, что это будет полезно для вас, и вы знаете, что любые вопросы или предложения дайте мне знать.

привет

PD: В этом руководстве мы используем пароли, сохраненные в базе данных в виде обычного текста, если вы хотите большей безопасности, я рекомендую вам попробовать md5 😉


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

28 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   LiGNUxero сказал

    ОЧЕНЬ ХОРОШО!!! Пару недель назад я устанавливал это, но с vsftpd, и я не уверен, поэтому я собираюсь попробовать это, чтобы увидеть, как это. Спасибо

    1.    КЗКГ ^ Гаара сказал

      Спасибо друг.
      vsftpd Я не помню, когда я в последний раз использовал его ... несколько лет назад, ... если я когда-либо использовал его, HAHA. На данный момент с PureFTPd я более чем доволен 😀

  2.   правильный сказал

    Очень хороший вклад!

    1.    КЗКГ ^ Гаара сказал

      Спасибо compa 😀
      Вы делаете то, что можете смеяться….

  3.   Computer Guardian сказал

    Уумм, интересно ... передайте мне IP-адрес БД, в которой я хочу иметь под рукой набор пользователей и паролей 😉

    Не будь злым, чувак

    1.    КЗКГ ^ Гаара сказал

      Я не понял хе-хе ... о каких IP и БД вы говорите?
      Если вы имеете в виду, что эти данные, которые я поместил в учебник, также могут быть на сервере, да, вы правы ... они находятся в службе FTP на виртуальном ПК на моем ноутбуке, у него ОЧЕНЬ хороший брандмауэр (iptables) так что… ХАХАХАХА, конечно, не будь злым, LOL !!!

  4.   Computer Guardian сказал

    Хоренья, что за хорона…. Это будет сложнее, чем кажется, воспользоваться некоторой уязвимостью и получить эти данные 😉

  5.   Алгабе сказал

    Очень интересно!! 🙂

    1.    КЗКГ ^ Гаара сказал

      Благодарю вас!
      Это то, что я стараюсь отличать нас от остальных сайтов ... что мы стараемся размещать не столько новости, сколько технические статьи 😀

  6.   Жискар сказал

    Насколько это быстро по сравнению с Samba? (только локальная сеть)

    1.    LiGNUxero сказал

      что samba и ftp - это две разные вещи, ftp - серьезный протокол, а smb - просто для облегчения обмена между win и linux.
      Если вы ищете производительность в сети, используйте службу FTP, в противном случае используйте самбу без проблем.

      1.    КЗКГ ^ Гаара сказал

        Точно.
        Скажем, FTP немного серьезнее Samba, по крайней мере, на мой взгляд.

        Я вообще не проводил никаких тестов, но, возможно, FTP немного быстрее.

        1.    Жискар сказал

          Спасибо. Я использую Samba, чтобы с моей консоли Wii (используя wiimc) я мог смотреть фильмы и сериалы, которые я загружаю на свой компьютер. Но wiimc также может подключаться к ftp-серверу. Я использовал Samba, потому что она была самой простой, но меня всегда заинтриговало, будет ли она быстрее с ftp. Придется попробовать.

          1.    КЗКГ ^ Гаара сказал

            Ну, вы также можете просто смонтировать Apache на свой компьютер, и Wii будет подключаться, он должен быть быстрее, чем самба ... и намного проще в настройке, чем FTP 😀

          2.    Жискар сказал

            Wiimc (Wii Media Player) принимает только Samba и FTP-соединения.

  7.   Макс Сталь сказал

    Превосходно. Вам просто нужно что-то для подобных статей (и сайта в целом), чтобы все было идеально; шаблон CSS для печати статей в формате PDF или на бумаге.

  8.   LiGNUxero сказал

    Я не знаю, будет ли он моим собственным, но большая проблема в том, что пользователи могут просматривать все каталоги, даже если я даю им определенный каталог, например "/ var / www / user_site", если они подключаются по ftp, они иметь доступ в любом месте с моего компьютера ¬¬
    это не очень безопасно, ха-ха

  9.   LiGNUxero сказал

    ВОТ!!!
    Чтобы пользователи, которых мы создали, не могли перемещаться по всей нашей системе, мы должны добавить параметр «-A» при запуске чистого ...

    Итак, что мы добавляем в файл /etc/rc.local, который вы добавили в учебник, это
    чистый ftpd-mysql -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    и вы должны заменить его другим:
    чистый ftpd-mysql -A -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    Принято ли это? ... Эта новая строка имеет параметр -A для ограничения только каталога, которому мы его назначаем, и ничего другого, что он может создать, но не может повысить уровень.

    D: этот милый чистый fptd

    1.    КЗКГ ^ Гаара сказал

      Спасибо за совет 😀

  10.   Роберто сказал

    Здравствуйте, в этой реализации MySQL и FTP можно реализовать квоты, в настоящее время у меня есть ftp-сервер с vsftpd, и у меня нет проблем с квотами, но, будучи виртуальным пользователем (созданным в mysql), будут ли квоты действительны? а второй - это место, где хранятся файлы, загруженные пользователями, то есть каталоги каждого пользователя.

    1.    КЗКГ ^ Гаара сказал

      Теоретически вы можете реализовать квоты, на самом деле в базе данных есть поля, созданные для них, а в файле конфигурации службы FTP есть запросы, установленные для этого, что на самом деле я не тестировал 😉

      О том, куда пользователи поместят файлы, вы указываете это в 5-м поле, смотрите снимок экрана: https://blog.desdelinux.net/wp-content/uploads/2012/09/phpmyadmin-screenshot-nuevo-usuario.jpg

  11.   Роберто сказал

    Большое спасибо за ваш комментарий, я собираюсь протестировать эту систему на тестовом сервере и прокомментировать результаты, надеюсь, что смогу, потому что это отличный метод, чтобы все было в порядке, а с RAID у вас есть стабильная резервная копия система: D.

    1.    КЗКГ ^ Гаара сказал

      Спасибо за комментарий 🙂

  12.   Роберто сказал

    У меня есть вопрос, мне уже удалось установить pure-ftp с mysql и квотами, теперь проблема в том, как я могу приостановить учетную запись из самой таблицы mysql, не изменяя ее пароль пользователя или загруженные файлы.

    1.    КЗКГ ^ Гаара сказал

      Я могу придумать два способа, самый простой - изменить значение Статус от 1 до 0, теоретически, если он на 0, аккаунт деактивирован, попробуйте это и скажите мне 🙂

  13.   Биркгофу сказал

    Роберто, как вам удалось установить сборы с использованием этого объекта? Пожалуйста, поделитесь информацией.
    Очень хорошая запись !!

    1.    РобертоСотело сказал

      Биркофф, как раз в своем личном блоге я создал тему по этому поводу, оставляю вам ссылку на обзор:

      http://aprendelinux.net/instalar-servidor-ftp-pure-ftp-con-cuentas-virtuales-en-mysql/

  14.   Клаус сказал

    Приветствия:

    Я пытаюсь следить за всем, но получаю ошибку 501 и, прежде всего, ссылаюсь на то, что пароль неверен, когда я знаю, что это нормально