Loading

Цель следующей статьи — организация ftp доступа к серверу с хранением имен пользователей и паролей, домашних каталогов и т.д. в СУБД MySQL.

Для начала настройки proftpd.conf — главного конфигурационного файла нашего ftp-сервера — необходимо скачать и установить rpm пакеты proftpd-1.3.3c-1.el5.rf.x86_64.rpm proftpd-mysql-1.3.3c-1.el5.rf.x86_64.rpm, которые успешно можно найти при помощи любой удобной для Вас поисковой системы. Также подразумевается, что есть установленный и работающый сервер MySQL, для которого есть права супер-пользователя.

Пример конфигурации proftpd.conf с комментариями:

# cat /etc/proftpd.conf
# This is the ProFTPD configuration file
# $Id: proftpd.conf,v 1.1 2004/02/26 17:54:30 thias Exp $

ServerName                      "FTP server"
ServerIdent                     on "FTP Server ready."
ServerAdmin                     hostmaster@example.com
ServerType                      standalone
DefaultServer                   on
AccessGrantMsg                  "User %u logged in."
#DisplayConnect                 /etc/ftpissue
#DisplayLogin                   /etc/ftpmotd
#DisplayGoAway                  /etc/ftpgoaway
DeferWelcome                    off

# Do not perform ident nor DNS lookups (hangs when the port is filtered)
IdentLookups                    off
UseReverseDNS                   off

# Port 21 is the standard FTP port.
Port                            21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# Default to show dot files in directory listings
ListOptions                     "-a"

# See Configuration.html for these (here are the default values)
#MultilineRFC2228               off
RootLogin                       off
#LoginPasswordPrompt            on
MaxLoginAttempts                3
MaxClientsPerHost               1
#AllowForeignAddress            off     # For FXP

# Allow to resume not only the downloads but the uploads too
AllowRetrieveRestart            on
AllowStoreRestart               on

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.

AllowOverwrite on

# Под кем будет запускаться FTP демон
User                            nobody
Group                           nobody

# Disable sendfile by default since it breaks displaying the download speeds in
# ftptop and ftpwho
UseSendfile                     no

# This is where we want to put the pid file
ScoreboardFile                  /var/run/proftpd.score

#AllowGroup ftp
#DenyALL

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_sql.c
# настройки для авторизации через mysql. (пароли используются в открытом виде: PlainText)
SQLConnectInfo proftpd@localhost:3306 proftpd ftpserver
SQLAuthTypes PlainText
SQLUserInfo users userid passwd uid gid homedir shell
DefaultRoot ~
RequireValidShell off
SQLGroupInfo groups groupname gid members
SQLAuthenticate users groups

# путь к лог-файлу и его формат отображения
SQLLogFile      /var/log/proftpd.log
LogFormat                       default "%h %l %u %t \"%r\" %s %b"
LogFormat                       auth    "%v [%P] %h %t \"%r\" %s"

Также следует создать файла

touch /var/log/proftpd.log

С настройками proftpd закончено и теперь стоит приступить к созданию базы данных в MySQL и внесения в нее необходимых данных. Для начала создадим пользователя, который будет владельцем данной базы данных, пусть это будет proftpd:

   mysql -u root -p
   Enter password:
   mysql>grant select,insert,update,delete,create,drop
   ->on proftpd.*
   ->to proftpd@localhost
   ->identified by 'myftpserver';
   Query OK, 0 rows affected (0.16 sec)
   mysql>exit;

Теперь необходимо зайти под только что созданным пользователем и создать саму базу данных:

   mysql -u proftpd -p
   Enter password:
   mysql>create database proftpd;
   Далее создадим две табилци users и groups:
   mysql>use proftpd;
   Database changed
   mysql> CREATE TABLE users (
   -> userid VARCHAR(30) NOT NULL UNIQUE,
   -> passwd VARCHAR(80) NOT NULL,
   -> uid INTEGER UNIQUE,
   -> gid INTEGER,
   -> homedir VARCHAR(255),
   -> shell VARCHAR(255)
   -> );
   Query OK, 0 rows affected (0.03 sec)
   mysql> CREATE TABLE groups (
   -> groupname VARCHAR(30) NOT NULL,
   -> gid INTEGER NOT NULL,
   -> members VARCHAR(255)
   -> );
   Query OK, 0 rows affected (0.01 sec)
   mysql>
   mysql> use proftpd
   Database changed

Теперь добавим нового пользователя в таблицу:

   mysql>insert into groups values('ftp','5001','');
   mysql>insert into users
   values('test','testftp','5001','5001','/var/www/vhosts/example.com','/sbin/nologin'
   );
   mysql>exit;

После внесения этих данных, необходимо создать каталог

/var/www/vhosts/example.com

и установить права вида

chown -R 5001:5001 /var/www/vhosts/example.com

Запуск ftp-сервера и установка запуска сервиса при загрузке системы производится по командам

service proftpd start
chkconfig proftpd on

  Один комментарий в “Установка ProFTPd и MySQL на CentOS 5.6 64bit”

  1. proftpd также можно установить после подключения EPEL