ProFTPD

Red Hat Linuxのページトップへ

現在インストールされているパッケージの確認
# rpm -qa | grep -i proftpd

インストールされているものがあれば削除
# rpm -e proftpd

$ tar zxvf proftpd-1.2.10rc1.tar.gz
configureします。
$ ./configure \
--prefix=/usr \
--exec-prefix=/usr \
--mandir=/usr/share/man/man8 \
--sysconfdir=/etc \
--with-includes=/usr/include/mysql \
--with-libraries=/usr/lib/mysql \
--with-modules=mod_wrap:mod_sql:mod_sql_mysql
makeします。
$ make
コンパイルしたProFTPDをインストールします。
# make install

MySQL
CREATE TABLE groups (
  `groupname` varchar( 30 ) NOT NULL default '',
  `gid` smallint( 5 ) unsigned NOT NULL default '2000',
  `members` varchar( 255 ) default NULL ,
  PRIMARY KEY ( `groupname` ) ,
  UNIQUE KEY `gid` ( `gid` ) 
) TYPE = MYISAM ;

CREATE TABLE users (
  `userid` varchar( 30 ) NOT NULL default '',
  `passwd` varchar( 30 ) NOT NULL default '',
  `uid` smallint( 5 ) unsigned NOT NULL default '2000',
  `gid` smallint( 5 ) unsigned NOT NULL default '2000',
  `homedir` varchar( 255 ) default NULL ,
  `shell` varchar( 255 ) default '/bin/true',
  PRIMARY KEY ( `userid` ) ,
  UNIQUE KEY `uid` ( `uid` ) 
) TYPE = MYISAM ;

/etc/proftpd.confの設定をします。
ServerName "ProFTPD Server"
ServerType standalone
DefaultServer on
Port 21
User nobody
Group nobody

# ドット・ファイルを含め、すべてのファイルを表示したい時に指定
ListOptions "-a"

SQLConnectInfo DATABASE_NAME@localhost MySQL_USER MySQL_PASS
SQLAuthenticate on

# SQLAuthTypesをBackendにするとMySQLのPASSWORD関数で暗号化される
SQLAuthTypes Plaintext

# SQLMinUserUID, SQLMinUserGID未満のユーザーは
# ログインユーザーはSQLDefaultUID, SQLDefaultGIDの値として動作する。
SQLMinUserUID 500
SQLMinUserGID 100

# ユーザーディレクトリが存在しなければ自動的に生成する
SQLHomedirOnDemand on

# 以下はVineの初期値と同じにしました。
# 必要なら適当に変更してください。
Umask  022
TimesGMT  FALSE
MaxInstances  30
User		  nobody
Group		  nobody

 
*******************************************************************
% ./configure --prefix=/usr/local/proftpd --mandir=/usr/local/man \
 --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/local/mysql/include \
 --with-libraries=/usr/local/mysql/lib/mysql
% make
% su
# make install

mod_sql
mod_quota
mod_quota
mod_quota

# cd contrib/
# wget ftp://pooh.urbanrage.com/pub/c/mod_quota.c

# gedit mod_quota.c

28〜29行目
#define QUOTA_FILE /* comment this out when using another type */
/* #define QUOTA_MYSQL */ /* quota using MYSQL database */
↓
/* #define QUOTA_FILE */ /* comment this out when using another type */
#define QUOTA_MYSQL  /* quota using MYSQL database */

% ./configure --with-modules=mod_sql:mod_sql_mysql:mod_quota --with-includes=/usr/local/mysql/include \
 --with-libraries=/usr/local/mysql/lib/mysql
--localstatedir=/var/lock	ロックファイルを作成する場所の指定
--sysconfdir=/etc		設定ファイルの場所の指定(標準:/usr/local/etc)

########################
# Logs
########################
SystemLog /var/log/proftpd.log
ExtendedLog /var/log/proftpd.log ALL
TransferLog NONE
WtmpLog off
LogFormat default "%h %l %u %t \"%r\" %s %b"

########################
# Others
########################
UseFtpUsers off
DefaultRoot ~
UseReverseDNS off
LsDefaultOptions "-a"
TimesGMT off
PidFile /var/run/proftpd.pid

########################
# SQL Authentication
########################
SQLAuthenticate on
SQLConnectInfo Proftpd@localhost mysql_proftpd mysql_password
SQLAuthTypes Backend
#SQLAuthTypes Plaintext
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1 where userid='%u'" users
SQLHomedirOnDemand on
SQLDefaultGID 1001

########################
# SQL Quota
########################
Quotas on
QuotaDefault 1024
QuotaCalc on
SQLQuotaInfo localhost mysql_proftpd mysql_password Proftpd
SQLQuotaTable users
SQLQuotaName userid
SQLQuotaUsed used
SQLQuotaQuota quota

#QuotaType soft
QuotaType hard

QuotaExempt 0,1001
QuotaExempt 0,1001

***********************************************************************
ProFTPD - MySQLでアカウント&Quota管理

--------------------------------------------------------------------------------


はじめに


MySQLを使ったアカウント&Quota管理を行うProFTPDの構築について解説します。
ここではMySQLが既にデフォルトディレクトリにインストールされている事を前提としています。



用意するもの


proftpd-1.2.7.tar.gz

ftp://ftp.proftpd.org/distrib/source/



mod_quota.c_for_1.2.7

ftp://pooh.urbanrage.com/pub/c/mod_quota/



コンパイル&インストール


% tar zxvf proftpd-1.2.7.tar.gz
% cp mod_quota.c_for_1.2.7 proftpd-1.2.7/contrib/mod_quota.c
% cd proftpd-1.2.7
% vi contrib/mod_quota.c

モジュール内のQuota定義をファイル制御からMySQL制御へ修正します。


--- contrib/mod_quota.c.orig    Sat Feb 15 09:09:22 2003
+++ contrib/mod_quota.c Sat Feb 15 09:09:46 2003
@@ -25,8 +25,8 @@
    $Libraries: -lmysqlclient$
 */
 
-#define QUOTA_FILE /* comment this out when using another type */
-/* #define QUOTA_MYSQL */    /* quota using MySQL database */
+/* #define QUOTA_FILE */ /* comment this out when using another type */
+#define QUOTA_MYSQL    /* quota using MySQL database */
 
 /* 
   This module provides very simple quota management.  It keeps track of uploads
% env LDFLAGS="-L/usr/local/lib/mysql -R/usr/local/lib/mysql" CFLAGS="-O2 -I/usr/local/include -I/usr/local/include/mysql" ./configure --with-modules=mod_sql:mod_sql_mysql:mod_quota
% make
% su
# make install



認証用データベース&アカウントテーブルの作成


# mysqladmin create proftpd
# mysql proftpd


mysql> create table ftp_auth_table (
      -> id varchar(64) not null primary key,
      -> passwd varchar(64) binary not null,
      -> uid int(8) not null,
      -> gid int(8) not null,
      -> home varchar(64),
      -> shell varchar(64),
      -> count int(16)
      -> quota int(16)
      -> used int(16)
      -> );

mysql> grant all on proftpd.ftp_auth_table to connect_name identified by 'connect_password';
mysql> grant all on proftpd.ftp_auth_table to connect_name@localhost identified by 'connect_password';
mysql> flush privileges;
mysql> exit;



コンフィグレーション


# vi /usr/local/etc/proftpd.conf

下記を追加します。


SQLAuthenticate    users
SQLAuthTypes       Plaintext
SQLConnectInfo     proftpd@localhost:3306 connect_name connect_password
SQLUserInfo        ftp_auth_table id passwd uid gid home shell
SQLLog             PASS updatecount
SQLNamedQuery      updatecount UPDATE "count=count+1 WHERE id='%u'" ftp_auth_table
SQLHomedirOnDemand on

Quotas             on
QuotaDefault       1024000
QuotaType          hard
QuotaCalc          on
SQLQuotaTable      ftp_auth_table
SQLQuotaName       id
SQLQuotaUsed       used
SQLQuotaQuota      quota
SQLQuotaInfo       localhost connect_name connect_password proftpd
			

起動


# /usr/local/sbin/proftpd

ぺんたん.info
あかいひ.com
IPくん.com
8枠.com - 競馬情報
galhime.com

PC Q&A||古い記事|雑学|ラーメン