Як: FTP-служба з використанням бази даних MySQL

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

Цього разу я навчу вас, як встановити FTP-сервер, але не тільки це, навчу вас не так вже й складно, як зробити так, щоб користувачі, паролі та інші користувацькі дані зберігалися в базі даних MySQL, а не в облікових записах місцеві.

Чому це так?

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

Для досягнення цього ми будемо використовувати Чисто-FTPd, ну ... давайте почнемо 🙂

Встановлення служби FTP за допомогою Pure-FTPd

1. Перше, що потрібно зробити, це встановити пакет: pure-ftpd-mysql

У таких дистрибутивах, як Debian або похідні: aptitude встановити pure-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

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

Як керувати користувачами FTP?

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

Сподіваюся, це вам буде корисно, і ви знаєте, будь-які питання чи пропозиції повідомте мене про це.

привіт

PD: У цьому посібнику ми використовуємо паролі, збережені в базі даних у вигляді простого тексту, якщо ви хочете отримати більше безпеки, рекомендую спробувати md5 😉


Зміст статті відповідає нашим принципам редакційна етика. Щоб повідомити про помилку, натисніть тут.

28 коментарі, залиште свій

Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   LiGNUxero - сказав він

    ДУЖЕ ДОБРЕ!!! Пару тижнів тому я встановлював це, але за допомогою vsftpd, і я не впевнений, тому я спробую це, щоб побачити, як це. Дякую

    1.    KZKG ^ Гаара - сказав він

      Дякую, друже.
      vsftpd Я не пам’ятаю, коли я востаннє використовував його… це буде через кілька років… якщо я коли-небудь використовував його HAHA. На даний момент з PureFTPd я більш ніж задоволений 😀

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

    Дуже хороший внесок!

    1.    KZKG ^ Гаара - сказав він

      Дякую компа 😀
      Ти робиш те, що можеш хахати ...

  3.   Комп’ютерний охоронець - сказав він

    Ууумм, цікаво ... передайте мені ІР БД, який я хочу мати під набором користувачів та паролів 😉

    Не будь злим, чоловіче

    1.    KZKG ^ Гаара - сказав він

      Я не зрозумів хе-хе ... про який IP та БД ви говорите?
      Якщо ви маєте на увазі, що ці дані, які я помістив у навчальному посібнику, також можуть бути на сервері, так, ви маєте рацію ... вони знаходяться у службі FTP на віртуальному ПК на моєму ноутбуці, у нього ДУЖЕ хороший брандмауер (iptables) так що… ХАХАХАХАХА, звісно, ​​вони не злі ЛОЛ !!!

  4.   Комп’ютерний охоронець - сказав він

    Joroña який joroña…. це буде складніше, ніж здається, скористатися деякою вразливістю та захопити ці дані 😉

  5.   Водорості - сказав він

    Дуже цікаво!! 🙂

    1.    KZKG ^ Гаара - сказав він

      Дякую
      Це те, що я намагаюся відрізняти нас від решти сайтів ... що ми намагаємось розміщувати не стільки новини, скільки технічні статті 😀

  6.   Гіскард - сказав він

    Наскільки це швидко в порівнянні з самбою? (лише локальна мережа)

    1.    LiGNUxero - сказав він

      що самба та ftp - це дві різні речі, ftp - це серйозний протокол і smb, щоб полегшити обмін між win та linux.
      Якщо ви шукаєте продуктивність в мережі, використовуйте послугу FTP, інакше використовуйте самбу без проблем

      1.    KZKG ^ Гаара - сказав він

        Точно.
        Скажімо, FTP трохи серйозніший за Samba, принаймні на мій погляд.

        Я не робив жодного тесту взагалі, але, можливо, FTP трохи швидший.

        1.    Гіскард - сказав він

          Дякую. Я використовую Samba, щоб із консолі Wii (за допомогою wiimc) я міг переглядати фільми та серіали, які завантажую на свій комп’ютер. Але wiimc може також підключитися до ftp-сервера. Я використовував Samba, оскільки це було найпростіше, але мені завжди було цікаво, чи буде це швидше з ftp. Мені доведеться спробувати.

          1.    KZKG ^ Гаара - сказав він

            Ну, ви також можете просто змонтувати Apache на своєму ПК, і щоб Wii підключався, він повинен бути швидшим, ніж самба ... і набагато простішим у налаштуванні, ніж FTP 😀

          2.    Гіскард - сказав він

            Wiimc (медіапрогравач Wii) приймає лише з'єднання Samba та FTP.

  7.   Макс Сталь - сказав він

    Відмінно. Вам просто потрібно щось до таких типів статей (і сайту загалом), щоб зробити все ідеальним; шаблон CSS для друку статей у форматі PDF або на папері.

  8.   LiGNUxero - сказав він

    Я не знаю, чи буде це моє власне, але велика проблема в цьому полягає в тому, що користувачі можуть переглядати всі каталоги, навіть якщо я даю їм певний каталог, наприклад "/ var / www / user_site", якщо вони підключаються за допомогою ftp, вони мати доступ до будь-якого місця з мого ПК ¬¬
    це не дуже безпечно ха-ха

  9.   LiGNUxero - сказав він

    ОСЬ!!!
    Щоб користувачі, яких ми створюємо, не могли переходити по всій нашій системі, ми повинні додати параметр "-A" при запуску чистого ...

    Отже, те, що ми додаємо до /etc/rc.local, яке ви помістили в підручнику, це таке
    pure-ftpd-mysql -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    і ви повинні замінити його іншим:
    pure-ftpd-mysql -A -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    Це вдячно? ... Цей новий рядок містить параметр -A для обмеження каталогу, до якого ми його призначаємо, і нічого іншого, він може створювати, але не може підвищувати рівень.

    Д: цей милий чистий fptd

    1.    KZKG ^ Гаара - сказав він

      Дякую за підказку 😀

  10.   Роберто - сказав він

    Привіт, можливо реалізувати квоти в цій реалізації MySQL та FTP, на даний момент у мене є ftp-сервер з vsftpd, і я не маю проблем з квотами, але будучи віртуальним користувачем (створеним у mysql), чи будуть квоти дійсними? а друге - там, де зберігаються файли, завантажені користувачами, тобто каталоги кожного користувача.

    1.    KZKG ^ Гаара - сказав він

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

      Про те, куди користувачі розміщуватимуть файли, ви визначаєте це у 5-му полі, див. Скріншот: https://blog.desdelinux.net/wp-content/uploads/2012/09/phpmyadmin-screenshot-nuevo-usuario.jpg

  11.   Роберто - сказав він

    Щиро дякую за ваш коментар, я збираюся протестувати цю систему на тестовому сервері та прокоментувати результати, сподіваюся, що зможу, тому що це чудовий спосіб мати все в порядку, а з RAID ви маєте стабільну резервну копію система: Д.

    1.    KZKG ^ Гаара - сказав він

      Дякую за коментар 🙂

  12.   Роберто - сказав він

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

    1.    KZKG ^ Гаара - сказав він

      Я можу думати про два шляхи, найпростіший - це змінити значення Статус від 1 до 0, теоретично, якщо він дорівнює 0, рахунок деактивовано, спробуйте це і скажіть мені 🙂

  13.   Бірхофф - сказав він

    Роберто, як вам вдалося встановити збори за допомогою цього засобу? Будь ласка, поділіться інформацією.
    Дуже хороший вхід !!

    1.    РобертоСотело - сказав він

      Біркгофф, щойно у своєму особистому блозі я створив тему про це, я залишаю посилання для вас:

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

  14.   Клаус - сказав він

    Спасибі

    Я намагаюся слідувати усьому, але отримую помилку 501, а найбільше посилаюся на те, що пароль неправильний, коли я знаю, що це нормально