Установка ProFTPd c MySQL и вебадминкой proFTPd Administrator
Не так давно, я ставил PureFTP с вебинтерфейсом управления, а теперь аналогичная задача, только с ProFTPd.
ProFTPd установим с поддержкой MySQL, для этого имеется целый, отдельно выделенный порт во FreeBSD:
cd /usr/ports/ftp/proftpd-mysql/ make install clean |
Перед сборкой появится диалог настройки сборки, как я уже говорил в статье Настройка ProFTPD, количество опций просто огромно:
┌────────────────────────────────────────────────────────────────────┐ │ Options for proftpd-mysql 1.3.2 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │[ ] BAN Include mod_ban (Requires CTRLS) │ │ │ │[ ] CLAMAV Include mod_clamav │ │ │ │[ ] CTRLS Include controls │ │ │ │[ ] DIGEST Include mod_digest │ │ │ │[X] IFSESSION Include mod_ifsession │ │ │ │[ ] IPV6 Use IPv6 │ │ │ │[ ] LDAP Use LDAP │ │ │ │[ ] LDAP_TLS Use LDAP TLS (Requires LDAP, OPENSSL) │ │ │ │[X] MYSQL MySQL auth (Can be combined with PGSQL) │ │ │ │[X] NLS Use nls (builds mod_lang) │ │ │ │[X] OPENSSL Include mod_tls │ │ │ │[ ] PGSQL Postgres auth (Can be combined with MYSQL) │ │ │ │[ ] QUOTA Include mod_quota │ │ │ │[ ] QUOTATAB_RADIUS include mod_quotatab_radius │ │ │ │[ ] RADIUS Include mod_radius │ │ │ │[X] RATIO Include mod_ratio │ │ │ │[X] README Include mod_readme │ │ │ │[X] REWRITE Include mod_rewrite │ │ │ │[ ] TDS FreeTDS - Sybase & MS-SQL auth (Exclusive) │ │ │ │[X] WRAP Include mod_wrap2 │ │ │ │[ ] WRAP_FILE Include mod_wrap2_file │ │ │ │[ ] WRAP_SQL Include mod_wrap2_sql │ │ ├─└────.(+)────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘ |
Описание опций установки, я приводил в упомянутой выше статье Настройка ProFTPD, по сравнению с теми опциями, добавился только выбор MySQL auth.
Установку окончена, настройку отложим, сначала надо скачать proFTPd Administrator, скачать его можно с http://sourceforge.net/projects/proftpd-adm/, к сожелению в портах его нет, а имеющийся proma, мне не подошел. Поэтому качаем последнюю версию, у меня это было так:
wget -c http://puzzle.dl.sourceforge.net/sourceforge/proftpd-adm/proftpd_admin_v1.2.tar.gz |
Полученный архив распаковываем:
tar xvfz proftpd_admin_v1.2.tar.gz |
После распаковки можно приступить к настройке ProFTPd, пример файла настройки находится в том каталоге который получился при распаковке, я укажу относительный путь, в каталоге misc/sample_config, находится файл proftpd.conf, возьмем из него опции отвечающие за подключение к mysql, совместим с тем конфигурационным файлом, что упоминался в Настройка ProFTPD и в итоге получим вот такой файл настроек(/usr/local/etc/proftpd.conf):
ServerName "Hilik FTP server" ServerType standalone DefaultServer on ScoreboardFile /var/run/proftpd/proftpd.scoreboard Port 21 Umask 022 MaxInstances 30 CommandBufferSize 512 User nobody Group nogroup DefaultRoot ~ AllowOverwrite on DefaultAddress 89.252.34.107 <Limit SITE_CHMOD> DenyAll </Limit> #Опция включает автосоздание домашнего каталога CreateHome on # Авторизация на MySQL # =========== AuthOrder mod_sql.c SQLAuthTypes Backend SQLConnectInfo proftpd_admin@localhost proftpd proftpdpass SQLUserInfo usertable userid passwd uid gid homedir shell SQLGroupInfo grouptable groupname gid members SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)" # Log the user logging in SQLLog PASS counter SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable # logout log SQLLog EXIT time_logout SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable # display last login time when PASS command is given SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'" SQLShowInfo PASS "230" "Last login was: %{login_time}" # xfer Log in mysql SQLLog RETR,STOR transfer1 SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat SQLLOG ERR_RETR,ERR_STOR transfer2 SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat |
Настройка самого ProFTPd на этом фактически закончена, но запустить мы его не можем, сначала надо создать базу и дать доступ к ней. Дамп базы находится в каталоге misc/database_structure_mysql, в файле db_structure.sql.
Создадим базу и таблицы в ней:
mysql -uroot -p <db_structure.sql |
После того как база будет создана, сделаем возможным ее использование:
mysql -uroot -p mysql> grant all on proftpd_admin.* to 'proftpd'@'localhost' identified by 'proftpdpass'; |
Для вебинтерфейса либо сконфигурируем новый виртуалхост, либо, разместим распакованный каталог в имеющемся виртуалхосте( не забудте обязательно запаролить каталог средствами апача).
Далее, необходимо убедится, что файл configuration.xml доступен для записи. Если нельзя записаться в него, делаем:
chown www:www configuration.xml |
Теперь из интерфейса можно настроить авторизацию в MySQL:
При правильной настройке, пропадет надпись Database Error, можно переходить к добавлению пользователей и групп из секции Users.
Из замеченных недостатках, это то, что мне пришлось размещать симлинку из нужного раздела, у меня это был /home/storage на /ftp
В целом, панель управления очень удобная.