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

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

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

Чому це так?

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

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

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

1. Перше, що потрібно зробити, це встановити пакет: чистий-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 😉


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

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

*

*

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

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

    ДУЖЕ ДОБРЕ!!! Пару тижнів тому я встановлював це, але за допомогою 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.    LiGNUxer - сказав він

      що самба та 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.   LiGNUxer - сказав він

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

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

    ОСЬ!!!
    Щоб користувачі, яких ми створюємо, не могли переходити по всій нашій системі, ми повинні додати параметр "-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, а найбільше посилаюся на те, що пароль неправильний, коли я знаю, що це нормально