« 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