Оглавление:
Статья последний раз была обновлена 04.03.2023
Мар
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:
При правильной настройке, пропадет надпись Database Error, можно переходить к добавлению пользователей и групп из секции Users.
Из замеченных недостатках, это то, что мне пришлось размещать симлинку из нужного раздела, у меня это был /home/storage на /ftp
В целом, панель управления очень удобная.
http://www.hilik.org.ua/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-proftpd-c-mysql-%D0%B8-%D0%B2%D0%B5%D0%B1%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%BA%D0%BE%D0%B9-proftpd-administrator/
Кандидат технических наук, доцент кафедры ИУ-6 (Компьютерные системы и сети) Московского государственного технического университета им. Н. Э. Баумана. Самый молодой в России PhD in Computer Science. Эксперт в области компьютерных технологий и программирования.
Стаж: 8 лет.
Образование: МГТУ им. Н. Э. Баумана, к.т.н.
- Как узнать IP-адрес по MAC-адресу - 07.04.2023
- Пинг проходит, а страницы в браузере не открываются - 07.04.2023
- Что если сайт пингуется «извне», но не открывается из под «локалки»? - 07.04.2023