ноября 4 2007 06:25 пп
Установка и настройка VSFTPD + MYSQL (Ubuntu & Debian)
Vsftpd считается одним из самых быстрых и хорошо защищенных FTP серверов под Linux. Обычно он устанавливается и конфигурируется под пользователей зарегистрированных в системе. В этом руководстве предполагается установка vsftpd под виртуальных пользователей, зарегистрированных в базе данных MySQL.
Такое решение позволяет открыть и управлять до тысячи ftp пользователей на одном сервере.
Управлять MySQL базой вы можете с помощью пакета phpMyAdmin.
Он имеет достаточно удобный графический интерфейс, который позволяет не применять коммандную строку.
1 Введение
Использовался дистрибутив Ubuntu 7.10.
Все пакеты взяты из штатных репозитариев.
2 Установка vsftpd, MySQL и phpMyAdmin
Vsftpd собран без поддержки MySQL, по этой причине неоходимо установить пакет libpam-mysql для PAM аутентификацию в MySQL базе данных. таким образом мы должны установить следующие пакеты libpam-mysql совместно с vsftpd, MySQL, и пакет phpMyAdmin:
Код:
sudo aptitude install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin
Далее необходимо назначить пароль для пользователя root для управления MySQL (замените слово yourrootsqlpassword на ваш настоящий пароль) :
Код:
mysqladmin -u root password yourrootsqlpassword
проверим все ли получилось?
Код:
netstat -tap | grep mysql
должно написать:
Код:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld
Это если у вас имя хоста только локальное localhost.localdomain, в противном случае вы увидите что-то типа:
Код:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqld
Для смены пароля вашей базы данных MySQL под ваш hostname, примените следующую комманду:
Код:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3 Создаем в терминале суперпользователя MySQL базу данных под vsftpd
Код:
mysql -u root -p
в появившемся окне выполняем следующие команды (т.е. находясь в командной оболочке MySQL создадим базу):
Их можно скопировать выделить и затем вставить, нажав среднюю кновку мыши.
Код:
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;
Далее таблицу для этой базы:
Код:
USE vsftpd;
Код:
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 ;
quit;
Запустив в браузере ссылку- http://localhost/phpmyadmin/ (или ваш- например: server1.example.com, или можно вставить IP адрес вашего сервера) вы попадете в утилиту phpmyadmin.
С помощью этой утилиты вы можете создать или изменить эту же базу данных (vsftpd), и тут же просмотреть её.
Позже с помощью неё вы сможете управлять вашим vsftpd сервером.
4 Конфигурируем vsftpd
В начале создаем непривилегированного пользователя vsftpd (с домашней директорией: /home/vsftpd) входящего в группу: nogroup. Домашние директории виртуальных пользователей, в дальнешем будут расположены в этой /home/vsftpd директории (например: /home/vsftpd/user1, /home/vsftpd/user2, и т.д.).
Код:
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Сохраняем оригинальный /etc/vsftpd.conf файл и создаем другой:
Код:
cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null > /etc/vsftpd.conf
gedit /etc/vsftpd.conf
Вставляем в открывшееся окно следующий текст:
Код:
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
сохраняем созданный файл.
Посмотреть примеры можно по адресу:
Для использования в дальнейшем опций: user_config_dir, создадим вновь специальную директорию:
Код:
mkdir /etc/vsftpd_user_conf
В эту директорию в дальнейшем вы можете класть файлы конфигурации VSFTPD для отдельных пользователей.
Так же должны сконфигурировать PAM для ваших виртуальных FTP пользователей с аутентификацией в MySQL базе данных вместо расположения в /etc/passwd и /etc/shadow. Конфигурационный файл для PAM под vsftpd должен находится в папке /etc/pam.d/vsftpd. Сохраняем оригинальный и создаем новый:
Код:
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null > /etc/pam.d/vsftpd
gedit /etc/pam.d/vsftpd
Вставляем в открывшееся окно следующий текст:
Код:
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
Сохраняем этот файл.
Помните теперь что вы единственный, кто может восстановить ваш MySQL пароль !
Перезапустим наш vsftpd сервер:
Код:
/etc/init.d/vsftpd restart
5 Создаем первого виртуального пользователя
Заходим опять под root в оболочку MySQL :
Код:
mysql -u root -p
Пишем или копируем команду:
Код:
USE vsftpd;
Создаем пользователяпод именем: testuser и паролем secret:
Код:
INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret')); quit;
Домашняя директория testuser’а будет здесь /home/vsftpd/testuser.
Если она не создалась автоматически, создадим эту директорию вручную в группе: nogroup:
Код:
mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuser
Теперь через любой FTP клиент для Linux или Windows, или используя просто браузер, вы можете соединится c вновь созданным сервером, используя имя testuser и пароль secret.
Для создания и администрирования пользователей вашего фтп сервера вы можете использовать скрипт любезно предоставленный Александром Астаповым, скачать его и почитать о возможностях можно в отдельном посте, http://sudouser.com/skript-dlya-upravleniya-polzovatelyami-vsftpd.html
7 Ссылки
Popularity: 25%
31 Комментариев »
31 Responses to “Установка и настройка VSFTPD + MYSQL (Ubuntu & Debian)”
Leave a Reply
You must be logged in to post a comment.



on 01 Июл 2008 at 14:07 #
Привет, неполучается, всё делаю ровно так кк написана, а в итоге ftp не пускает, testuser и secret ну ни как не подходят, может быть ты чтото забыл ещё написать?
on 01 Июл 2008 at 14:41 #
Нашел косяк! проблема была в том что файл /etc/pam.d/vsftpd должен состоять из двух строк!!!! не 4 как может показаться, обе строки начинаются на auth required и account required соответственно. На эту мысль меня навела статься . В общем все заработало автору спасибо.
iron_head, Скорее всего ты, что то пропустил =)
Нет, точно все написано так как надо, проверено не один раз уже многими людьми
Вот спасибо, класная статья. Именно то что я хотел – что бы для каждого пользователя можно точно настроить доступ.
Единственно, может кому полезно будет, я добавил так в конфиге:
anonymous_enable=YES # включ anonymous
anon_upload_enable=NO # запрешаем ему загружать
anon_mkdir_write_enable=NO # и делать директории
anon_root=/home/ftp/anonymous/ # перенаправляем его в нужную директорию
и вот так можно подключать директори:
sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/ftp/anonymous/
Что бы сделать это при загрузке системы, прописываем в:
sudo gedit /etc/fstab
Я думаю можно и скрипт написать, который сам будет и домашние каталоги юзеров создавать и права им назначать и в мускуль прописывать.
А инфа очень полезная, спасибо!
Скрипт есть, выложен в другом посте, адресhttp://sudouser.com/skript-dlya-upravleniya-polzovatelyami-vsftpd.html
Наконец после долгих хождений по гуглу нашлась понятная ламаке мануалка. Спасибо огоромное комрады!!
Объясните так же подробно как прикрутить предложенный скрипт. И как он запускается?
Запустить его можно как и любой bash или sh скрипт, как пользовать отписал в пост о скрипте.
я забыл добавить что я ламер )))
Подскажите пожалуйста какие права доступа и какого юзера и группу нужно назначить директории /home/vsftpd ?
Спасибо.
[...] Инструкция по установке FTP сервера vsFTPd. Статья настолько точно и правильно все объясняет, что необходимости в обработке результата напильником нет – необходимо просто следовать пошаговой инструкции. [...]
Как подружить его с ISPConfig 3? Где прописать, чтобы vsftpd видел базу пользователей панели хостинга?
наверное есть разница в дистрибутивах
ситуация:
AltLinux Server 4.0.1
vsftpd работает через xinet.d
пакет libpam-mysql называется pam-mysql (именно как lib нету)
все остальное по этой инструкции (разве что пароль поменял на базу)
в логах видно как юзер заходит и сразу же вылетает
tail /var/log/auth/secure
Aug 7 09:10:00 rainbow2 xinetd[14426]: START: ftp pid=14435 from=80.252.245.101
Aug 7 09:10:00 rainbow2 xinetd[14426]: EXIT: ftp pid=14435 duration=0(sec)
а вы говорите нет необходимости допиливать =)
у кого нибудь есть идеи как победить?
[...] Взято сhttp://sudouser.com [...]
Доброго времени суток . Скажите пожалуйста зачем нужен libpam-mysql и можно ли связать фтипиху с мусклом без этого пакета . Заранее спасибо
Библиотека pam нужна для авторизации. Пакет libpam-mysql нужен для авторизации с использованием базы данных mysql. Поставьте pure-ftpd, он умеет авторизовывать из базы данных.
Доброго времени суток . настраивал по вашему мануалу , выскакивает следующая ошибка 500 OOPS: child died
В чем может быть проблема ? Заранее спасибо
В логах ищите. При настройке по мануалу выше нет ошибок.
простите может вопрос глупый но как я понимаю логи пишутся в /var/log/vsftpd.log но у меня он абсолютно пуст и там не появляется ни одной записи
Ну значит ошибка в конфигах.
Код:
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
Максим , вопрос такой . Что это за user и passwd ? Это пользователь и пароль от mysql ?
Заранее спасибо
Да, это данные для авторизации в Mysql, логин, пароль хост и имя базы.
Спасибо
Что-то у меня не получается… При попытке подключиться сервер выдает ошибку 530.
Начал разбирать конфиги и наткнулся на такую строчку:
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
посмотрел в файловой системе – такого файла у меня нет. Может быть, в этом проблемма?
Каким образом в таком случае генерируется сертификат?
И еще вопрос: как назвать файлы конфигов для конкретных пользователей?
Файлы называть логином юзера, например, если есть логин vasya то файл конфига будет называться vasya
sudo /etc/init.d/vsftpd status rather than invoking init scripts through /etc/init.d, use the service(8) utility e.g. service vsftpd start since the script you are attempting to invoke has been converted to an upstart job, you may also use the start(8) utility, e.g. start vsftp
что это значит?
В новой версии Ubuntu рекомендуют использовать команду service вместо прямого запуска скриптов из /etc/init.d
Добрый день . Вопрос такой . Несколько месяцев назад воспользовался вашей статьей . очееееень понравилась . Сейчас хочу завести виртуального юзера который гуляет по всему компу . Создал в базе юзера admin . В директории user_config_dir создал одноименный файл . Что надо там прописать . Посоветуйте please . Я так понимаю что надо использовать опцию local_root или chroot_local_user … Дайте пожайлуста совет
ftp по всей машине это изврат. Создать простого юзера, использовать sftp.