Вы находитесь здесь: Главная > Разное > Создание хостинга. Часть 6. Установка и настройка ftp-сервера proftpd с авторизацией в MySql и PHP админкой

Создание хостинга. Часть 6. Установка и настройка ftp-сервера proftpd с авторизацией в MySql и PHP админкой

. . . . .

хостингВсем привет!

К сожалению новогодние каникулы закончились, но зато сново появилось время вести свой блог 🙂

Сегодня установим на Debian ftp-сервер proftpd с базой пользователей в MySql и администрированием юзеров через web с помощью proFTPd Administrator.

Установим proftpd и модуль mysql авторизации к нему:

debian:~# apt-get install proftpd-basic proftpd-mod-mysql

В процессе установки proftpd выберем stadalone режим работы ftp сервера.

Далее необходимо установить Web админку proFTPd Administrator. Скачать ее можно по этому адресу — http://sourceforge.net/projects/proftpd-adm/
Скачиваем исходники proFTPd Administrator:

debian:~/src# wget http://citylan.dl.sourceforge.net/project/proftpd-adm/proFTPd%20Administrator/proFTPd%20Administrator%20v1.2/proftpd_admin_v1.2.tar.gz

Распаковываем:

debian:~/src# gzip -d proftpd_admin_v1.2.tar.gz
debian:~/src# tar -xvf proftpd_admin_v1.2.tar

Создаем папку /var/www/proftpd и копируем туда код веб-интерфейса.

debian:~/src# mkdir /var/www/proftpd
debian:~/src# cp -R proftpd_admin_v1.2/* /var/www/proftpd/

Далее необходимо создать базу данных для админки proftpd, а затем пролить струкуру базы.
Перейдем в папку со скриптами для БД:

debian:/var/www/proftpd# cd /var/www/proftpd/misc/database_structure_mysql

Созадим БД и структуру:

debian:/var/www/proftpd/misc/database_structure_mysql# mysql -uroot -p < db_structure.sql

Установим доступ к базе для пользователя proftpd.

debian:/var/www/proftpd/misc# mysql -uroot -p
mysql> grant all on proftpd_admin.* to 'proftpd'@'localhost' identified by 'pass4proftpd';

Теперь приступим к настройкe proftpd в debian. Конфигурационные файлы лежат тут — /etc/proftpd/. Файл основной конфигурации — proftpd.conf, файл для sql авторизации sql.conf.

Настроим proftpd.conf

Include /etc/proftpd/modules.conf
#Подключим конфиг для mysql авторизации
Include /etc/proftpd/sql.conf
UseIPv6                         off
IdentLookups                    off
ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                   off
#настроим корректное отображение времени в логах proftpd
TimesGMT off
SetEnv TZ /etc/localtime
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayChdir                    .message true
ListOptions                     "-l"
AuthOrder                    mod_sql.c* mod_auth_unix.c
DenyFilter                      \*.*/
Port                            21
MaxInstances                    30
User                            proftpd
Group                           nogroup
RequireValidShell                off
Umask                           022  022
AllowOverwrite                  on
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
<Anonymous ~ftp>
   User                          ftp
   Group                        nogroup
   UserAlias                    anonymous ftp
   DirFakeUser  on ftp
   DirFakeGroup on ftp
   RequireValidShell           off
   MaxClients                   10
   DisplayLogin                 welcome.msg
   DisplayChdir                 .message
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>
   </Directory>
</Anonymous>

Теперь приступим к настройке sql.conf:

<IfModule mod_sql.c>
SQLBackend      mysql
SQLEngine on
SQLAuthenticate on
SQLAuthTypes Backend
SQLLogFile                      /var/log/proftpd/proftpd.mysql
SQLConnectInfo                  proftpd_admin@localhost proftpd pass4proftpd
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)"
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"
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
</IfModule>

Перезапустим сервис чтобы подключить авторизацию proftpd через mysql .

debian:/etc/proftpd# /etc/init.d/proftpd restart

Собственно, настройка proftpd закончена. Осталось настроить вебадминку proftpd.

Сменив владельца у конциграционного файла configuration.xml с root на www-data, чтобы можно было настраивать админку через web.

debian:/var/www/proftpd# chown www-data:www-data configuration.xml

Далее запускаем браузер и открываем страничку http://192.168.0.68/proftpd/. Там заходим в раздел configure->database и вводим логин/пароль для доступа к БД proftpd_admin:

Затем укажем корректные пути до скриптов и утилит, чтобы proftp admin работал корректно.
Идем во вкладку Proftpd ( предварительно создав папку /var/ftp) :

Во вкладке extensions:

Приступим к тестированию авторизации пользователя proftpd через mysql. Создадим в админке пользователя test с каким-нибудь паролем.
Затем установим ftp клиент в систему.

debian:~# apt-get install ftp

и попробуем залогиниться на наш ftp под пользователем test:

debian:/etc/proftpd# ftp localhost
Connected to localhost.
220 ProFTPD 1.3.1 Server (Debian) [127.0.0.1]
Name (localhost:root): test
331 Password required for test
Password:
230-Last login was: 2011-01-11 13:36:11
230 User test logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Всё. Настройка завершена.

. . . . .
  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

Оставить комментарий

This blog is kept spam free by WP-SpamFree.

. . . . . . . . . . . . . . . . . . . .