В один прекрасный день мне понадобился FTP-сервер. Для начала попробовал ProFTPd, но он мне не подошел. Требовался простой в настройке и обслуживании и вместе с тем безопасный FTP-сервер. Также требовалась возможность работы через веб-интрефейс и поддержка виртуальных пользователей. Тогда то я и решил попробовать PureFTPd.
Установка PureFTPd
На выбор в репозитории предлагается 4 варианта возможной конфигурации:
- pure-ftpd
- FTP-сервер, с аутентификацией через системных пользователей,
- pure-ftpd-ldap
- FTP-сервер, с аутентификацией через пользователей LDAP,
- pure-ftpd-mysql
- FTP-сервер, с аутентификацией через пользователей хранимых в СУБД MySQL,
- pure-ftpd-postgresql
- FTP-сервер, с аутентификацией через пользователей хранимых в СУБД PostgreSQL.
Небольшие пояснения:
- символ #
(решётка) - означает выполнение команды от root (суперпользователя),
- cat /path/to/some.file
- означает что ниже приведено полное содержимое файла some.file
, расположенного в директории /path/to
,
- echo no > /path/to/some.file
- означает, что в some.file
будет вставлен текст no
, с заменой содержимого. Если файл не существует, он будет создан.
Я выбрал вариант с поддержкой MySQL:
# apt-get install pure-ftpd-common pure-ftpd-mysql
Настройка PureFTPd
Одной из особеннойстей PureFTPd является то, что каждый параметр конфигурации хранится в отдельном файле. И каждый файл имеет имя параметра, а в самом файле хранятся значения этих параметров. Файлы эти расположены в директории:
/etc/pure-ftpd/conf
Рассмотрим наиболее интересные файлы конфигурации предоставленные нам мейнтейнерами по умолчанию.
Указан файл для логов трансфера, в формате Apache:
# cat /etc/pure-ftpd/conf/AltLog
clf:/var/log/pure-ftpd/transfer.log
Указан файл конфигурации для MySQL:
# cat /etc/pure-ftpd/conf/MySQLConfigFile
/etc/pure-ftpd/db/mysql.conf
Анонимным пользователям доступ запрещен:
# cat /etc/pure-ftpd/conf/NoAnonymous
yes
Теперь необходимо дополнить конфигурацию. Для начала запретим UNIX-аутентификацию:
# echo no > /etc/pure-ftpd/conf/UnixAuthentication
Затем запретим PAM-аутентификацию:
# echo no > /etc/pure-ftpd/conf/PAMAuthentication
Ограничим пользоватей их домашним каталогом:
# echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
Укажем диапазон портов для пассивных соединений:
# echo "40110 40210" > /etc/pure-ftpd/conf/PassivePortRange
Не забудьте потом открыть необходимые порты в брандмауэре.
По ссылке доступна таблица со всеми возможными параметрами которые я нашел.
Установка веб-интерфейса PureFTP WebUI.
Есть два веб-интерфейса, которые я нашел. Это PureFTPd WebUI и User Manager. Для себя я выбрал PureFTPd WebUI. Ну-с, приступим к установке.
Переходим в директорию файлов веб-сервера:
1
|
|
Где sitename
- директория веб-сервера с уже настроенным сайтом.
Скачаем файлы веб-интерфейса с гитхаба:
1
|
|
Переходим в скачаный каталог pure-ftpd-webui
:
1
|
|
В одном из файлов я нашел ошибку в функции create_table_settings()
. Неверно указано значение параметра pureftpd_init_script_path
и отсутствует параметр pureftpwho_path
. Надо заменить строку:
1
|
|
На
1 2 |
|
Для нормального доступа у вас уже должен быть настроен веб-сервер. После того как откроете страницу http://sitename/pure-ftpd-webui
, вам будет доступна страница настройки:
Где sitename
- доменное имя сервера или его IP-адрес.
После того как вы нажмете кнопку Install вы попадете на страницу настройки подключения к СУБД MySQL:
На следующем шаге, вам предложат указать параметры пользователя для подключения к веб-интерфейсу:
После завершения настройки, вам будет доступен интерфейс для управления PureFTPd: