Автор: nmind . konstantin kalachev / http://tutorial.ru
Дата последней модификации: 2006.03.16
Используемые файлы:
- proftpd-1.3.0rc3.tar.gz
Дополнительные файлы:
- proftpd.conf
- ftp_manager.phpz
Полезные ресурсы:
- http://www.proftpd.org/
- http://www.lastditcheffort.org/~aah/proftpd/mod_sql/
Устанавливалось на:
Gentoo Linux 2.6.9-22.EL + MySQL 4.1.15-max
Ссылка на оригинал:
http://www.tutorial.ru/index.php/tutorial/11/
- Введение
ProFTPD на данный момент является одним из самых популярных ftp-серверов. Помимо простоты установки его можно настроить абсолютно для любых нужд. А благодаря встроенным модулям его можно приспособить под совсем нетривиальные задачи.
В этом туториале рассказывается как установить proftpd с его модулем mod_sql_mysql. При таком варианте установки proftpd будет обращаться к базе в mysql для того чтобы аутентифицировать пользователя.
У этого подхода есть свои плюсы и минусы. Основным плюсом является удобство управления пользовательскими параметрами. А основным минусом то, что ваш ftp полностью зависит от здоровья базы. Если mysql будет перенагружен или просто упадет, то пользователи не смогут залогиниться.
Еще одним плюсом подобного метода является отсутствие системных пользователей. Для того, чтобы завести ftp-пользователя вам не нужно будет создавать еще один системный аккаунт. А uid и gid ftp-пользователя будут задаваться в базе. Поэтому, когда возникнет необходимость сделать доступной папку "/www/mydomain.ru" для системного пользователя "vasya", достаточно будет узнать uid и gid системного пользователя vasya (id vasya) , после чего вписать эту информацию в mysql базу для нужного ftp-пользователя и изменить права на каталог /www/mydomain.ru (chown -R uid:gid /www/mydomain.ru).
Красным цветом обозначены параметры, которые очень желательно заменить на свои в целях безопасности или эстетики .)
- Установка
Добавляем пользователя proftpd под которым будет работать proftpd-демон
|
Делаем папки, в которых будут храниться дистрибутив и исходники
|
Качаем и разархивируем ProFTPD
|
Переходим в каталог с исходниками
|
Начинаем компиляцию
Параметры configure скрипта будут работать для mysql установленного в папку /usr/local/mysql . proftpd должен увидеть каталоги include и lib в которых лежат библиотеки mysql.
|
- Конфигурация
В зависимости от того что именно вам нужно от ftp-сервера зависит его дальнейшая настройка. Я приведу пример простого конфигурационного файла, который работает и описывает какое-то минимальное количество полезных параметров. Для того, чтобы детальнее изучить возможности сервера ProFTPD можно посмотреть в каталог sample-configurations (/usr/local/src/proftpd-1.3.0rc3/sample-c
Но если вам не нужно ничего особенного, то можно расслабиться и использывать уже готовый конфиг с tutorial.ru
В качестве директории для инсталляции мы выбрали /usr/local/proftpd . Поэтому теперь там нужно сделать конфигурационный файл для proftpd
|
Переименовываем уже существующий proftpd.conf
|
Скачиваем готовый конфиг
|
Это то, что находится в файле proftpd.conf
|
Некоторые директивы в этом конфиге закомментированы, потому что их не так часто используют. К примеру анонимный доступ по ftp или лог файлы. По умолчанию proftpd будет посылать в syslogd свой xferlog и в файле /var/log/xferlog будет появляться информация о соединениях и изменениях, совершаемых через proftpd. Иногда это бывает очень полезно, особенно когда кто-нибудь, узнав пароль от чужого ftp-аккаунта нахулиганит. Всегда можно посмотреть ip адрес с которого заходил негодяй и узнать какие именно действия он совершал.
Если же такого файла не создается можно раскомментировать строку TransferLog в конфиге.
Еще немного о самых интересных параметрах конфигурации.
- ServerName - Тут вы можете написать свое собственное приветствие. Что-то типа "ftp server on mydomain.ru"
- MaxInstances - Максимальное количество соединений. Полезно против DoS атак ну и вообще чтобы как-нибудь ограничить разумное количество соединений к вашему серверу.
- MaxClientsPerHost - Максимальное количество соединений с одного хоста.
- AllowRetrieveRestart - Разрешить продолжать скачивать файл с какого-то определенного места.
- AllowStoreRestart - Разрешить закачивать файл с определенного места.
- DefaultRoot - Выставлена равной "~" . Это значит, что пользователь не сможет никуда выйти из своего домашнего каталога.
- AllowOverride - Запрещает использование файла .ftpaccess
- AllowOverwrite - Разрешить перезаписывание файлов.
- SQLConnectInfo - тут описываются все параметры для входа в mysql базу для proftpd. Я поставил пароль 584jd84. Очень советую поменять его на любой другой.
- SQLAuthTypes - Имеет значение "Crypt Plaintext". Crypt это функция ENCRYPT() в mysql . Раньше я использовал Backend и функцию password(), но в последних версиях mysql она изменилась и можно запутаться.
- RequireValidShell - Этот параметр говорит proftpd, что для аутентификации пользователю не нужно иметь shell-а
- SQLLogFile - Закомментирован. Он заставляет писать все, что делает модуль mod_sql в файл. Нужно это пожалуй только для отладки.
- Анонимный ftp-доступ
Для того, чтобы добавить анонимный вход по ftp нужно раскомментировать все поле <Anonymous /home/www/ftp> ... </Anonymous> , создать папку /home/www/ftp и выдать ей нужные права.
Анонимный вход будет работать под системным пользователем ftp. На всех unix\linux-подобных системах он существует с момента установки.
Создаем папку и выдаем ей права
|
- Создание SQL базы
Надеюсь, вы знаете root пароль от вашего mysql-сервера. Эти команды сделают базу proftpd и дадут пользователю proftpd к ней доступ по паролю 584jd84 . Конечно же пароль лучше поставить свой...
Скачиваем sql команды с tutorial.ru
|
На этом этапе можно отредактировать файл proftpd.mod_sql_mysql.sql , исправив в нем пароль на свой: IDENTIFIED BY "...."
|
А это то, что находится в файле proftpd.mod_sql_mysql.sql
|
Для проверки нового mysql-пользователя и базы можно сделать тестового ftp-пользователя в базе, а потом сразу удалить его.
|
- Автозагрузка
Предполагается, что вы сможете по этому туториалу установить proftpd на любой unix/linux-подобной операционной системе. Но в стандартной поставке proftpd есть стартовые скрипты только для linux и suse. Если интересно, лежат они в "contrib/dist/rpm".
Поэтому я сделал свой скрипт, который наверняка подойдет для любой системы и рассчитан на то, что вы поставили proftpd в /usr/local/proftpd
|
Запускаем демона
|
В теории, все должно работать .)
- Добавление пользователя
Приведу пример добавления пользователя. Например, если нужно добавить ftp-пользователя со следующими параметрами
username: some
password: j9ek9
homedir: /www/some.ru
uid: 5012
gid: 5012
|
- Фтп менеджер
Для того, чтобы сэкономить себе и вам время на добавление и изменение пользователей руками я написал скрипт, который может добавлять, удалять, менять пароли и показывает информацию по ftp-аккаунтам.
Он написан на php и для его настройки нужно поменять буквально пять параметров. В нем много комментариев на русском для тех, кто захочет его изменить или просто разобраться что к чему.
|
Все параметры находятся в начале скрипта. Поменять нужно доступ к базе и имя ftp-хоста.
Вот часть кода, которая за них отвечает:
$mysql_host = 'localhost';
$mysql_database = 'proftpd';
$mysql_user = 'proftpd';
$mysql_password = '584jd84';
$ftp_host_name = '_ENTER_YOUR_FTP_HOST_NAME_HERE_';
Вот несколько примеров по его использованию.
Вывести список всех ftp-аккаунтов
|
Добавить ftp-аккаунт c логином some.ru , паролем di48fd , который будет находится в директории /home/www/some.ru
|
Изменить пароль для ftp-аккаунта с логином some.ru на 3jf8sfd8
|
Вывести информацию по ftp-аккаунту с логином some.ru
Тут уже не будут выводится параметры password и ftp-link, потому что скрипт не знает пароля, он храниться в зашифрованном виде
|
Удалить ftp-аккаунт с логином some.ru
Скрипт удалит информацию только из базы и предложит вам сделать "rm -rf /home/www/some.ru" руками в целях безопасности
|
-------------
(с) tutorial.ru / дядьки онлайн