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. Теперь создадим пользователя мойфтпусер и мы дадим разрешения на использование пользователя в базе данных, которую мы только что создали, этот пользователь будет иметь пароль мой фтппароль:

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

Пароль: тестовый пароль

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

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

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

Ну ... больше нечего добавить 🙂

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

привет

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


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

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

*

*

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

  1.   ЛиГНУксеро сказал

    ОЧЕНЬ ХОРОШО!!! Пару недель назад я устанавливал это, но с 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.    ЛиГНУксеро сказал

      что 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.   ЛиГНУксеро сказал

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

  9.   ЛиГНУксеро сказал

    ВОТ!!!
    Чтобы пользователи, которых мы создали, не могли перемещаться по всей нашей системе, мы должны добавить параметр «-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 и, прежде всего, ссылаюсь на то, что пароль неверен, когда я знаю, что это нормально