Мар 01 2009

Установка 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:
proadm

При правильной настройке, пропадет надпись Database Error, можно переходить к добавлению пользователей и групп из секции Users.

Из замеченных недостатках, это то, что мне пришлось размещать симлинку из нужного раздела, у меня это был /home/storage на /ftp

В целом, панель управления очень удобная.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть