vine-users ML アーカイブ



[vine-users:052900] proftpd user authentication by MySQL

  • From: Hiroshi Satou <impreza@xxxxxxxxxxxxx>
  • Subject: [vine-users:052900] proftpd user authentication by MySQL
  • Date: Sun, 18 Aug 2002 00:41:34 +0900
佐藤@山形です。
久しぶりの投稿になります。

以前から考えていた「proftpdのユーザ認証にMySQLを使う」方法を
試してみて出来たので報告します。

#検索してみて同じようなレポートが出ていないと思いましたが、
重複していたらスミマセン。


環境:
  VineLinux 2.5(i386)
  proftpd 1.2.5rc1
  mysql 3.23.51


手順:
1. MySQLのrpmをインストールする
# apt-get install MySQL
# apt-get install MySQL-client
# apt-get install MySQL-devel
# apt-get install MySQL-shared

2. データベース'proftpd'を作成する
3. ユーザ'proftp'を作成する(権限はSELECTがあればOK)
4. データベース'proftpd'にテーブル'groups'と'users'を作成する
テーブル構造は以下のとおり

CREATE TABLE groups (
groupname varchar(30) NOT NULL default '',
gid int(11) NOT NULL default '1000',
members varchar(255) default NULL
UNIQUE KEY gid (gid)
PRIMARY KEY (groupname)
) TYPE=MyISAM;

CREATE TABLE users (
userid varchar(30) NOT NULL default '',
password varchar(30) NOT NULL default '',
uid int(11) NOT NULL auto_increment,
gid int(11) NOT NULL default '1000',
homedir varchar(255) default NULL,
shell varchar(255) default '/bin/true',
UNIQUE KEY uid (uid),
PRIMARY KEY (userid)
) TYPE=MyISAM;

5. ユーザとグループのレコードを作成する
INSERT INTO groups VALUES ('ftpusers',1000,'');
INSERT INTO users VALUES ('user1','pass1',1000,1000,'/home/test','/bin/true');

6. proftpdのsource rpmをインストールする
# apt-get source proftpd

7. proftpd.specファイルを開き、--with-modules=の行に
mod_sql:mod_sql_mysql を追加する

8. 編集したproftpd.specを元にrpmパッケージを作成する。
# rpm -bb proftpd.spec

9. 3で作成したrpmパッケージをインストールする
# rpm -ivh proftpd-1.2.5-0vl0.1.rpm

10. /etc/proftpd.confを開き以下の設定を追加する
SQLConnectInfoやSQLAuthTypes環境に合った調整が必要。

<Global>
  DefaultRoot           ~
  SQLConnectInfo        proftpd@localhost:3306 proftp ****
  SQLAuthTypes          Plaintext
  SQLUserInfo           users userid password uid gid homedir shell
  SQLGroupInfo          groups groupname gid members
  SQLAuthenticate       on
  SQLHomedirOnDemand    on
</Global>

11. /etc/shellsを編集し、ftpで使用するshellを追加する

12. proftpdをstandalone起動させるか、inetd起動させるかはお好みで。


苦労した点や感想等:
1. proftpdのSQL関連ディレクティブが1.2.5から仕様が変更になり、ソフト
エージェンシーのホームページにある情報が古く役に立ちませんでした。
URL: http://www.mysql.jp/mysql/proftpd.html

2. VinePlusにあるMySQLパッケージはsql関連モジュールが有効になっていま
せんでした。本家からtarballをGETし、コンパイル・インストールしようか
迷いましたが、source rpmがあったので管理の楽なRPMでインストールするこ
とにしました。

3. MySQLに詳しくなかったので、データベース作成、テーブル作成、ユーザ
登録などの諸々の操作はwebmin上から行いました。

4. ユーザ登録・修正・削除を行うフロントエンドを作らないとメンテナンス
が大変⇒PHP4でサンプルプログラムを作ってみたけど面白い(はまりそう)

以上、何かのお役に立てれば幸いです。

 Name  : Hiroshi Satou
 E-mail : impreza@xxxxxxxxxxxxx