Инструменты пользователя

Инструменты сайта


vsftp

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

vsftp [2026/06/11 12:15] (текущий)
Строка 1: Строка 1:
 +====== Установка FTP сервера с использованием vsftpd и   MySQL в Ubuntu 7.04-810 ======
 +
 +Я уже писал про vsftpd сервер, который считается одним из быстрых и хорошо защищенных FTP серверов под Линух.
 +
 +Обычно он устанавливается и конфигурируется под пользователей зарегистрированных в системе.
 +
 +В этом руководстве предполагается установка vsftpd сервера под виртуальных пользователей, зарегистрированных в MySQL базе данных, взамен реальных системных пользователей.
 +
 +Такое решение позволяет открыть и управлять до тысячи ftp пользователей на одной машине.
 +
 +Управлять MySQL базой вы можете с помощью пакета phpMyAdmin.
 +
 +Он имеет достаточно удобный графический интерфейс, который позволяет не применять командную строку.
 +
 +===== 1. Введение =====
 +
 +Использовался дистрибутив Ubuntu 7.04-8.10. Все пакеты взяты из штатных репозитариев.
 +
 +Отмечу, что как всегда я отрабатывал это руководство на локальном сервере, т. е. имя хоста- localhost, web сервер-  http://localhost или IP адрес **127.0.0.1**.
 +
 +Вы можете применить свои установки, в т.ч. и реальные.
 +
 +===== 2. Установка vsftpd, MySQL и phpMyAdmin =====
 +
 +Vsftpd собран без поддержки MySQL, по этой причине необходимо установить пакет libpam-mysql для PAM аутентификацию в MySQL базе данных.
 +
 +Таким образом мы должны установить следующие пакеты libpam-mysql совместно с vsftpd, MySQL, и пакет phpMyAdmin:
 +
 +<code>aptitude install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin</code>
 +
 +Назначить пароль для пользователя root для управления базой MySQL (замените слово yourrootsqlpassword на ваш настоящий пароль):
 +
 +<code>mysqladmin -u root password yourrootsqlpassword</code>
 +
 +Проверим все ли получилось:
 +
 +<code>netstat -tap | grep mysql</code>
 +
 +должно написать:
 +
 +<file>tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2713/mysqld</file>
 +
 +Это если у вас имя хоста только локальное localhost.localdomain, в противном случае вы увидите что-то типа:
 +
 +<file>tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld</file>
 +
 +===== 3. Создаем в терминале суперпользователя MySQL базу данных под vsftpd =====
 +
 +<code>mysql -u root -p</code>
 +
 +в появившемся окне выполняем следующие команды:
 +
 +<code>CREATE DATABASE vsftpd;
 +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
 +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
 +FLUSH PRIVILEGES;</code>
 +
 +Далее создаем таблицу для этой базы:
 +
 +<code>USE vsftpd;</code>
 +
 +<code>CREATE TABLE `accounts` (
 +`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 +`username` VARCHAR( 30 ) NOT NULL ,
 +`pass` VARCHAR( 50 ) NOT NULL ,
 +UNIQUE (
 +`username`
 +)
 +) ENGINE = MYISAM ;</code>
 +
 +выходим из оболочки:
 +
 +<code>quit;</code>
 +
 +Т. е. последняя команда (quit), позволит выйти из командной оболочки MySQL. 
 +
 +Запустив в браузере ссылку- [[http://localhost/phpmyadmin/]] (или типа http://server1.example.com, а так же можно вставить IP адрес вашего сервера), вы запустите утилиту Phpmyadmin.
 +
 +С помощью этой утилиты вы можете создать эту же базу данных (vsftpd), и тут же просмотреть её.
 +
 +Позже с помощью неё вы сможете управлять вашим  vsftpd сервером.
 +
 +=====4. Конфигурируем vsftpd =====
 +
 +В начале создаем непривилегированного пользователя vsftpd (с  домашней директорией: /home/vsftpd) входящего в группу: nogroup.
 + Домашние директории виртуальных пользователей, в дальнешем будут расположены в этой /home/vsftpd директории (например: /home/vsftpd/user1, /home/vsftpd/user2, и т.д.).
 +
 +<code>useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd</code>
 +
 +Сохраняем оригинальный /etc/vsftpd.conf файл и создаем другой:
 +
 +<code>cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
 +cat /dev/null > /etc/vsftpd.conf
 +gedit /etc/vsftpd.conf</code>
 +
 +Вставляем в открывшееся окно следующий текст: 
 +
 +<code>listen=YES
 +anonymous_enable=NO
 +local_enable=YES
 +write_enable=YES
 +local_umask=022
 +dirmessage_enable=YES
 +xferlog_enable=YES
 +connect_from_port_20=YES
 +nopriv_user=vsftpd
 +chroot_local_user=YES
 +secure_chroot_dir=/var/run/vsftpd
 +pam_service_name=vsftpd
 +rsa_cert_file=/etc/ssl/certs/vsftpd.pem
 +guest_enable=YES
 +guest_username=vsftpd
 +local_root=/home/vsftpd/$USER
 +user_sub_token=$USER
 +virtual_use_local_privs=YES
 +user_config_dir=/etc/vsftpd_user_conf</code>
 +
 +сохраняем созданный файл.
 +
 +Посмотреть примеры можно по адресу: [[http://vsftpd.beasts.org/vsftpd_conf.html]]. 
 + 
 +Для использования в дальнейшем опции:** user_config_dir**, создадим вновь специальную директорию:
 +
 +<code>mkdir /etc/vsftpd_user_conf</code>
 +
 +Так же мы должны сконфигурировать PAM для ваших виртуальных FTP пользователей с аутентификацией в MySQL базе данных  вместо  расположения в /etc/passwd и /etc/shadow.
 +
 +Конфигурационный файл для PAM под vsftpd должен находится в папке **/etc/pam.d/vsftpd**.
 +
 +Сохраняем оригинальный и создаем новый:
 +
 +<code>cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
 +cat /dev/null > /etc/pam.d/vsftpd
 +gedit /etc/pam.d/vsftpd</code>
 +
 +Вставляем в открывшееся окно следующий текст:
 +
 +<code>auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
 +account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2</code>
 +
 +Сохраняем этот файл.
 +
 +Помните, что  теперь вы единственный, кто может восстановить ваш  MySQL пароль !
 +
 +Перезапустим наш  vsftpd сервер:
 +
 +<code>/etc/init.d/vsftpd restart</code>
 +
 +=====5. Создаем первого виртуального пользователя=====
 +
 +Заходим опять под root в оболочку MySQL :
 +
 +<code>mysql -u root -p</code>
 +
 +Пишем или копируем команду:
 +
 +<code>USE vsftpd;</code>
 +
 +Создаем пользователя под именем: **testuser** и паролем  **secret**:
 +
 +<code>INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret')); quit;</code>
 +
 +Домашняя директория testuser' а будет здесь /home/vsftpd/testuser.
 +
 +Если она не создалась автоматически, создадим  эту директорию вручную, в группе: nogroup:
 +
 +<code>mkdir /home/vsftpd/testuser
 +chown vsftpd:nogroup /home/vsftpd/testuser</code>
 +
 +Теперь через любой FTP клиент для Linux или Windows, или используя просто браузер, вы можете соединиться  c вновь созданным сервером, используя имя testuser и пароль secret.
 +
 +По той же схеме можно создать и остальных пользователей.
 +
 +=====6. Управление базой данных =====
 +
 +Используя пакет phpMyAdmin, для запуска которого нужно набрать в вашем браузере, примерно вот такую команду:
 + 
 +[[http://localhost/phpmyadmin/]]
 +
 +или примерно типа:
 +
 +[[http://server1.example.com/phpmyadmin/]]
 +
 +Используя эту утилиту вы можете администрировать vsftpd базу данных.
 +
 +В этих же целях можно использовать и пакет Webmin.
 +
 +Используя эти пакеты вы сможете редактировать, добавлять и удалять ваших FTP пользователей и их пароли и т.д. 
 +
 +смотри рис 1 и рис. 2:
 +
 +{{:vsftpd1.png|}}
 +
 +{{:vstpd2.png|}}
 +
 +===== 7. Ссылки =====
 +
 +[[http://vsftpd.beasts.org]]
 +
 +[[http://howtoforge.com/vsftpd_mysql_debian_etch]]
  
vsftp.txt · Последнее изменение: 2026/06/11 12:15 (внешнее изменение)