MySQLでProFTPDの認証(mod_sql_mysql)
MySQLを利用してProFTPDの認証を行う方法を調べ、うまくいったようなので公開しておきます。以下ではVinelinux2.6r4でテストしてみました。
ProFTPDのインストール
VineLinuxでMySQLを使って認証するにはソースからインストールする必要があります。
- ftp.infoscience.co.jpからproftpd-1.2.10rc1.tar.gzをダウンロードします。
解凍します。
$ 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
事前にVine標準のproftpdをアン・インストールしておきます。
$ su
# rpm -e proftpd
コンパイルしたProFTPDをインストールします。
# make install
起動スクリプトのインストールをします。
# cp contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd
# chmod 755 /etc/init.d/proftpd
# /sbin/chkconfig proftpd on
MySQL, ProFTPDの設定
-
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
|
なお、ここで書かれたようにProFTPDをバージョンUPするとNLSTのオプション指定ができなくなります。ffftpなどではLISTコマンドでファイル名を取得するように設定してください。
MySQLのページ トップへ
|