« bashでランダム 簡易版 | メイン | ming-0.4.0-dev-2006_04_20.tar.gz »

2007年06月13日

proftpdのアカウントをpostgresで管理する

ProFTPDとPostgresqlを連携することにより、FTPに接続するユーザーとパスワードをデータベースで管理することができます。・・・らしいです^^

今回、以下の前提条件がありますので、注意!!!
[PostgreSQLのインストール先]
 /usr/loca/pgsqlにインストールしている
[ユーザメンテナンスを行うDB・テーブル名]
 DB名:ftp_user、テーブル名:ftp_user
[テーブルレイアウト]
 user_id text not null
 passwd text not null
 homedir text not null

##### まずは、ProFTPDをインストール #######
1.事前にPostgreSQLがインストールされていることを確認します。

2.ProFTPDのソースをダウンロードします。
 どこからから取ってきて下さい^^

3../configureを行う
 ただ、追加するモジュールを記述するのではなく、PostgreSQLのincludeディレクトリ・librariesディレクトリを指定します。(コンパイル時にPostgreSQLのヘッダーファイルが必要なので、明示的に!) 
 $ ./configure --with-modules=mod_sql:mod_sql_postgres --with-includes=/usr/local/pgsql/include --with-libraries=/usr/local/pgsql/lib

4.makeを行う
 $ make

5.インストールしましょー、もちろんroot権限で^^
 $ su
 # make install

##### 次に、ProFTPDの設定 #######
6.今回の仕組みでは、仮想ユーザにはシステムUIDが存在しませんので、仮想ユーザたちがファイルアップロードしたときのユーザIDを設定・取得します。
 # useradd -s /sbin/nologin www_ftp 
 # id www_ftp

7./usr/local/etc/proftpd.confを設定します。
 # vi usr/local/etc/proftpd.conf
 ここでは、SQLに関する設定を行います。以下の記述

>>>
#ユーザーテーブルでの認証を行う
SQLAuthenticate users

#パスワードにCRYPT方式の暗号化を使用する
SQLAuthTypes Crypt

#PostgreSQLへの接続情報
SQLConnectInfo ftp_user@localhost:5432 nobody

#mod_sqlのログ出力先
SQLLogFile /var/log/proftpd

#ユーザーテーブルのテーブル名とカラム名
SQLUserInfo ftp_user user_id passwd Null Null homedir Null

#デフォルトのUID
SQLDefaultUID [www_ftpユーザのUID]

#デフォルトのGID
SQLDefaultGID [www_ftpユーザのGID]

#デフォルトのホームディレクトリ
SQLDefaultHomedir "/home/www_ftp/"

#有効なシェルを設定しなくてよくなります
RequireValidShell off
<<<

8.そのほか、FTPの設定を行い、FTPサーバを再起動します。

以上で設定は終了です^^

##### 次に、ユーザメンテナンスのDB設定 #######
9.追加するユーザ名[hogehoge]のパスワードを発行します。
 $ perl -e 'print crypt("hogehoge", "AA")."\n";'

10.PostgreSQLにDBを作成します。
 $ createdb ftp_user

11.テーブルを作成します。
 $ psql ftp_user
 psql> create table ftp_user(
user_id text not null,
passwd text not null,
homedir text not null
);

12.動作確認で、hogehogeユーザを作成します。
 psql> insert into ftp_user values('hogehoge','[Cryptした文字列]','/home/www_ftp/hogehoge/');
 psql> quit

##### 確認しましょー^^ #######
13.ftpソフトで確認します

詳しくは、参考サイトまで・・・^^
http://www.gside.org/Gentoo/proftpd/proftpd_postgresql.html
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=4564


rpm のpostgres の場合 以下で通ったっぽい
./configure --with-modules=mod_sql:mod_sql_postgres --with-includes=/usr/include --with-libraries=/usr/lib/pgsql/

投稿者 muuming : 2007年06月13日 17:23

コメント

コメントしてください




保存しますか?