佐藤@山形です。 久しぶりの投稿になります。 以前から考えていた「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