[前][次][番号順一覧][スレッド一覧]

mysql:4564

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Thu, 25 Oct 2001 23:59:29 +0900
Subject: [mysql 04564] Re: Proftpd + qmail + vpopmail

とみたです。

On Thu, 25 Oct 2001 09:27:00 +0900
"Taro Yamamoto" <taro.y@xxxxxxxxxx> wrote:

> とりあえず、段階踏んで普通に Proftpd + MySQL で環境を作ってみようと思いま
> す。
> 鶴長さんのアドバイスと README を必死に訳して四苦八苦してみます(^-^;

そういえば、以前 Proftpd 1.2.2 の README.mod_sql を訳したことを
思い出しました。添付します。参考になりますでしょうか。

# こういうのを個人で抱えちゃってるのは良くないっすね (^^;

> 一つだけ質問なのですが、Proftpd + MySQL で環境を構築した場合、
> ユーザの追加はどうやってするのでしょうか?
> 自分で insert するのでしょうか?

だと思います。

--
とみたまさひろ <tommy@xxxxxxxxxx>
日本MySQLユーザ会 http://www.mysql.gr.jp


******************************************************************************
IMPORTANT UPGRADE INFORMATION

If you're moving from the mod_sqlpw which was included with
versions of ProFTPD prior to 1.2rc3, and all you want to do is
maintain your current setup, you MUST set the following two
directives:

'SQLDoGroupAuth' to OFF.
'SQLEncryptedPasswords' to ON unless you've specified it as OFF.

If you use the Postgres backend, and you depend on the PostgresPort to
default to 0, you now need to make that explicit by setting:

'PostgresPort' to 0.

Please read the 'Setup Notes' section, or at least check the directive
documentation for 'SQLProcessGrEnt' and 'SQLProcessPwEnt'.  These
directives can have a significant effect on the way mod_sql plays with
your database.

Please read the section on Deprecated Directives.  This will effect
EVERYONE for all versions of ProFTPD > 1.2 final.

New Directives:

SQLAuthTypes, SQLConnectInfo, SQLDefaultGID, SQLDefaultUID, SQLDoAuth,
SQLDoGroupAuth, SQLGroupGIDField, SQLGroupMembersField, SQLGroupTable,
SQLGroupnameField, SQLHomedirOnDemand, SQLMinID, SQLMinUserUID,
SQLMinUserGID, SQLLog, SQLProcessGrEnt, SQLProcessPwEnt,
SQLShellField, SQLUserTable, SQLWhereClause

Deprecated Directives:

MySQLInfo, PostgresInfo, PostgresPort, SQLEmptyPasswords,
SQLEncryptedPasswords, SQLKey, SQLKeyField, SQLPlaintextPasswords,
SQLSSLHashedPasswords, SQLScrambledPasswords 

This header will be removed for all versions of ProFTPD > 1.2 
******************************************************************************

mod_sql v.3.2.3
=======

mod_sql は、ProFTPD が SQL データベースに対するユーザ認証と名前
/UID/GID 検索を行なえるようにするためのモジュールです。バックエンドモジュー
ルは現在は MySQL と Postgres 用に提供されています。

ソースやこのファイルの更新については mod_sql ホームページをチェックして
ください: http://www.lastditcheffort.org/aah/mod_sql.html

Sections:

1. ProFTPD で mod_sql を使用する方法
2. 自分の SQL データベースを mod_sql で使用するように設定する方法
3. 設定の注意
4. 命令
5. 非難される命令
6. mod_sqlpw v.2.0 から mod_sql v.3.0 への変更
7. 謝辞
8. 作者

=====================================
1. ProFTPD で mod_sql を使用する方法
=====================================

mod_sql の現在のサポートバージョンは ProFTPD と共に配布されています。

この tarball 内のすべては ProFTPD ソースツリーの contrib サブディレクト
リ内に置きます:

# cd contrib
# tar -xzvf mod_sql-3.2.3.tar.gz

ProFTPD を mod_sql サポートで作成するためには、configure を(たとえば)次
の引数で呼び出します:

MySQL バックエンドを使用する場合:

./configure --with-modules=mod_sql:mod_sql_mysql

Postgres バックエンドを使用する場合:

./configure --with-modules=mod_sql:mod_sql_postgres

データベース固有のライブラリとへッダファイルを見つける方法を configure 
に伝える必要があります; 私は MySQL バックエンドを使用して、次のように 
configure を呼んでいます:

./configure --with-modules=mod_sql:mod_sql_mysql \
            --with-includes=/usr/local/include \
            --with-libraries=/usr/local/lib/mysql 

さあ、下の命令セクションを読んでください。

===================================================
2. 自分の SQL データベースを mod_sql で使用するように設定する方法
===================================================

あなたが自分のデータベースシステムを使用する方法を知っているとみなします。

最低限、mod_sql は2つのカラム: userid と passwd でテーブルにアクセスで
きる必要があります。完全な機能のためには、グループ情報を保持する他のデー
タベーステーブルの生成も含め、もっと必要となります。

次のテーブルへッダでは、'COLUMN' はカラム名、'TYPE' は期待されるデータ型
(文字列(text)または数値(numeric))、'R' は「必須カラム」を意味し、'N' は
「カラムが存在する場合 NULL 値が許されるかどうか」を意味します。'USE' は
何に用いられるかの *とても* 短い説明です。


USERTABLE:  このテーブルはデータベースに存在しなければならない。

COLUMN		TYPE	R	N	USE
---------------------------------------------------------
userid		text	Y	N	user's login id
uid		num	N	Y	user's uid
gid		num	N	Y	user's gid
passwd		text	Y	N	user's password
shell		text	N	Y	user's shell
homedir**	text	N	Y	user's homedir
count		num	N	N	login counter

**命令 SQLHomedir と SQLHomedirField の説明を参照



GROUPTABLE: このモジュールの完全な機能のために、このテーブルは存在すべき
です。これを生成しないことを選択した場合は、'SQLDoGroupAuth' 命令を 
'OFF' に設定しなければなりません。

COLUMN		TYPE	R	N	USE
---------------------------------------------------------
groupname	text	Y	N	group's name
gid		num	Y	N	group's gid
members		text	Y	Y	group's members

注意: グループ毎の複数のメンバは、カンマで区切る必要があります。空白を含
めてはいけません。

注意: mod_sql は適合するすべてのグループレコードを結合します -- つまり、
グループ毎に一人だけのメンバを持つ各グループ用に複数レコードを持つことが
できます。または、複数グループを持つ一つのレコード持つことができます。ま
たは、混在して適合することができます。

==============
3. 設定の注意
==============

proftpd-users メーリングリストでのよくある質問は、「なぜ mod_sql はデー
タベース内のすべてのユーザを通して繰り返すのか?」です。ここで理由を示し
ます。

mod_sql は ProFTPD core が投げるすべての認証関数を処理するようにデザイン
されています。これは、すべてのユーザを通して繰り返す関数(setpwent,
getpwent, endpwent)と、すべてのグループを通して繰り返す関数(setgrent,
getgrent, endgrent)を含んでいます。

mod_sql がすべてのグループやユーザを通して繰り返すように見える場合、それ
は ProFTPD core によって問い合わせられているためです(ひねくれた内部の要
求のためではありません)。

我々がすでに持っているよりも多くのさまざまなバックエンドモジュールを追加
することなしに、open query around を保持する良い方法がないため、
mod_sql は setpwent() が呼び出された時にすべてのユーザを事前にキャッシュ
し、setpwent() が呼び出された時にすべてのグループを事前にキャッシュしま
す。これは getpwent() と getgrent() 呼び出しをシンプルにします。at the
cost of front-loading the time cost

単純な状況では、これらの関数は二度と呼ばれません。ディレクトリやファイル
またはユーザやグループを元にするさまざまな FTP コマンドへのアクセスの制
限を始めた時に、ProFTPD は、パーミッションをチェックするためにユーザとグ
ループを通して繰り返すことを必要とします。基本的な ftp サーバ - 仮想サー
バや匿名サーバを含む - は、これらの(潜在的にとても)高価な呼び出しは発生
しません。

SQLProcessPwEnt と SQLProcessGrEnt はdumbing-down mod_sql の方法を提供す
るために追加されました; デフォルトでは、mod_sql はさまざまな pwent() と 
grent() 呼び出しを処理します。これらの命令が off に設定された場合、認証
ハンドラがシステムに存在していても mod_sql は単純に要求をパスします。こ
れらの命令を使用するということは、ProFTPD がユーザの認証のために同じ情報
を使用*しない*という意味であるということを覚えておいてください。それはセッ
ション中にユーザアクションを制御することです。

過去に mod_sql を使用した人のためには、これらの命令はおそらく「off」に設
定すべきです。mod_sql 3.2.0 以前のバージョン(またはこの前後)では、すべて
について {set|get|end}{pw|gr}ent 呼び出しの処理を行ないませんでした。そ
のため、これらの命令を off に設定することで、機能を失うことはありません。
mod_sql を新しく使う人は、必要に応じて考慮してください -- データベースに
格納されているすべてのユーザを通して繰り返すことのコストはデータベースか
らユーザ/グループを元にするアクセス制限の機能に値しますか?そうでなけれ
ば、データベースを使用しない方法と、どこにあなたのユーザ/グループ情報を
格納すべきかを再度検討する必要があります。

最後に、使用されるキャッシング方法は次の ProFTPD のメジャーリリースで変
更される計画があります。その時点で、我々は、データはセッションが開始毎に
再読み込みされないような、データベース情報のクロスセッションキャッシュを
行なう方法を持つべきです。

=============
4. 命令
=============

命令はアルファベット順に並んでいます。mod_sql を始める場合は、
'SQLConnectInfo', 'SQLAuthTypes' とデータを取り出すテーブルとフィールド
を制御するさまざまな命令('SQLUserTable', 'SQLUserField', etc) にもっとも
興味を持つでしょう。多くの命令は適当なデフォルトを持っています;極端な場
合、このモジュールを動作させるためには、3つの命令を設定する必要があるだ
けです: 'SQLConnectInfo', 'SQLAuthTypes', 'SQLHomedir'。

互換性は、mod_sql / mod_sqlpw のバージョンではなく ProFTPD のバージョン
を参照します。

-------------------
SQLAuthTypes

Syntax: SQLAuthTypes [OpenSSL] [Crypt] [Backend] [Plaintext] [Empty]
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

この命令は 'SQLEmptyPasswords', 'SQLScrambledPasswords',
'SQLSSLHashedPasswords', 'SQLPlaintextPasswords',
'SQLEncryptedPasswords' を非難します。

許可される認証型とチェック順を指定します。少なくとも一つの認証方法を指定
しなければなりません。

例:

SQLAuthTypes Crypt Empty

これはデータベース内のパスワードが UNIX crypt() 形式に一致するかどうかを
チェックすることを意味します; それが失敗した場合、データベース内のパスワー
ドが(与えられたパスワードと一致する)空かどうかをチェックします; それが失
敗した場合、mod_sql はユーザ認証を拒否します。

現在の型

Plaintext: データベース内のパスワードをプレーンテキストにすることを許し
	   ます。

OpenSSL:   データベース内のパスワードを '{digestname}hashedvalue' 形式に
	   することを許します。これは proftpd コンパイル時に 
	   'HAVE_OPENSSL' を定義して、OpenSSL 'crypto' ライブラリとリン
	   クした場合のみに有効です。

Crypt:	   データベース内のパスワードを UNIX crypt() 形式にすることを許
	   します。

Backend:   データベース固有のバックエンドチェック関数。すべてのバックエ
	   ンドでこれがサポートされるわけではありません。特に MySQL バッ
	   クエンドはこの型を使用して、MySQL 'PASSWORD()' で暗号化された
	   パスワードを認証します。Postgres バックエンドは何もしません。
	   注意。MySQL 実行ログが誰にでも読める場合、ユーザパスワードも
	   見られてしまいます。

Empty:     データベース内に空のパスワード(ユーザが入力したもの対して適合
	   する)を許します。データベースフィールドは本当に空の文字列でな
	   ければなりません -- つまり、NULL 値は認められません。この 
	   AUTHTYPE はとても注意してください。


-------------------
SQLAuthoritative

Syntax: SQLAuthoritative on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

mod_sql で認証を停止するか他の認証ハンドラを試すかどうかを記述します。デ
フォルトは off です -- 他のハンドラが試されます。

これは*とても*強力な命令です。SQLAuthoritative が設定された場合、*すべて
の*認証が SQL データベースを通ります -- グループ検索、UID 検索、その他。
'SQLDoAuth' と 'SQLDoGroupAuth' 命令も参照してください。

-------------------
SQLConnectInfo

Syntax: SQLConnectInfo connection-info [username] [password]
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

この命令は 'MySQLInfo', 'PostgresInfo', 'PostgresPort' を非難します。

接続情報を記述します。connection-info はデータベース、ホスト、ポート、そ
の他のバックエンド固有情報を記述します。username と password はそれぞれ
接続するためのユーザ名とパスワードを記述します。両方ともデフォルトは 
NULL です。これはバックエンドはバックエンド固有マナーと同じように取り扱
います。password を記述した場合は、username も記述しなければなりません。

与えられたバックエンドは、proftpd の起動時に connection-info フィールド
で文法エラーをチェックするための機会(義務ではない)を持ちます。しかし 
mod_sql が与えられたホストへの接続を試みるまで、semantic エラー(すなわち、
データベースに接続できない等)が捕捉されることを期待すべきではありません。

MySQL と Postgres バックエンドの connection-info は次の形式を期待します:

database[@hostname][:port]

hostname のデフォルトはバックエンド固有のホスト名です(MySQL と 
Postgres バックエンドの両方で 'localhost')。port のデフォルトはバックエ
ンド固有のデフォルトポートです(MySQL バックエンドは 3306、Postgres バッ
クエンドは 5432)。

例:

SQLConnectInfo  ftpusers@xxxxxxxxxx

これは「'foo.com' のデフォルトポートを経由して、データベース 'ftpuser' 
への接続を試みろ。ユーザ名 NULL とパスワード NULL を使用しろ」を意味しま
す。

SQLConnectInfo  ftpusers:3000 admin

これは「'localhost' のポート 3000 を経由して、データベース 'ftpuser' へ
の接続を試みろ。ユーザ名 'admin' とパスワード NULL を使用しろ」を意味し
ます。

SQLConnectInfo  ftpusers@xxxxxxxxxx:3000 admin mypassword

これは「'foo.com' のポート 3000 を経由して、データベース 'ftpuser' に接
続を試みろ。ユーザ名 'admin' とパスワード 'mypassword' を使用しろ」を意
味します。

バックエンドは connection-info に異なった情報を要求します; バックエンド
モジュールの使用をチェックしてください。

-------------------
SQLDefaultGID

Syntax: SQLDefaultGID defaultgid
Default: 65533
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

ユーザのデフォルト GID を設定します。SQLMinUserGID よりも大きくなくては
なりません。

-------------------
SQLDefaultUID

Syntax: SQLDefaultUID defaultuid
Default: 65533
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

ユーザのデフォルト UID を設定します。SQLMinUserUID よりも大きくなくては
なりません。

-------------------
SQLDoAuth

Syntax: SQLDoAuth on|off
Default: on
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

SQL 認証を有効にします。これは他のすべての命令を無効にします --
SQLDoGroupAuth と SQLAuthoritative は SQLDoAuth が off の場合効果があり
ません。

-------------------
SQLDoGroupAuth

Syntax: SQLDoGroupAuth on|off
Default: on
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

この命令は mod_sql にグループ情報を持っていないふりをさせます。mod_sql 
は現在、この命令が OFF でない限りグループ情報が有効だとみなすため、必然
的に 1.2.0rc2 までの ALL CONFIG FILES を破壊します。

これは SQLAuthoritative を無効にしません -- SQLAuthoritative が 'On' に
設定されて SQLDoGroupAuth が 'Off' に設定される場合、すべえてのグループ
関連クエリは、処理の機会を他のモジュールに与えることなく失敗します。

1.2.0 以前では、データベースからグループ情報を提供する方法がありませんで
した。これはいくつかのバグを引き起こし、このモジュールの機能を縮小させま
した。

-------------------
SQLGidField

Syntax: SQLGidField fieldname
Default: gid
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

ユーザの GID を保持するユーザテーブル内のフィールドを記述します。GID が
データベースから取り出される時、SQLMinUserGID の値に対してチェックされま
す。データベースが値をもたない(カラムがない)場合または取り出された値が 
SQLMinUserGID よりも小さい場合、ユーザの GID は SQLDefaultGID に設定され
ます。

-------------------
SQLGroupGIDField

Syntax: SQLGroupGIDField fieldname
Default: gid
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

グループの GID を保持するグループテーブルのフィールドを記述します。

-------------------
SQLGroupMembersField

Syntax: SQLGroupMembersField fieldname
Default: members
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

グループのメンバリストを保持するグループテーブルのフィールドを記述します。

-------------------
SQLGroupTable

Syntax: SQLGroupTable tablename
Default: groups
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

グループ情報を保持するテーブルの名前を記述します。

-------------------
SQLGroupnameField

Syntax:	SQLGroupnameField fieldname
Default: groupname
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

グループ名を保持するグループテーブルのフィールドを記述します。

-------------------
SQLHomedir

Syntax: SQLHomedir /path/to/virtual/site
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

このモジュールで認証されたすべてのユーザのデフォルトの homedir を記述し
ます。SQLHomedirField 命令を無効にします。どの命令でも homedir が設定さ
れない場合、認証は失敗します。

-------------------
SQLHomedirField

Syntax: SQLHomedirField fieldname
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

ユーザのホームディレクトリを保持するユーザテーブルのフィールドを記述しま
す。ディレクトリは 'SQLHomedir' 命令を使用しても定義されます。どの命令で
も homedir が設定されない場合、認証は失敗します。

-------------------
SQLHomedirOnDemand

Syntax: SQLHomedirOnDemand on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

ユーザのホームディレクトリがログイン時に存在していない場合、それを自動的
に生成するかどうかを記述します。

-------------------
SQLLog

Syntax: SQLLog cmd-set {insert | update} tablename query-string
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.1 and later

'SQLConnectInfo' 命令を経由してアクセスできるテーブルに情報を記録します。
任意のコマンドについて、複数の SQLLog 命令が影響を持ちます; たとえば、命
令を変更するユーザはログの複数の状態をトリガできます。

'LogFormat' と 'ExtendedLog' 命令のドキュメントを読むことを*強く*推奨し
ます, as the meta-sequences available to 'SQLLog' are largely
equivalent.

SQLLog の最初の引数 cmd-set は、コンマで区切られた(空白は含めない)、この
ログコマンドがトリガとなる FTP コマンドのリストです。コマンドのリストは
全体をリストするととても長いです; コマンドは CWD, DELE, HELP, LIST,
MKD, MODE, NLST, PASS, PASV, PORT さらにもと多くを含みます。完全なリスト
は FTP RFC をチェックしてください。

二番目の引数は 'insert' または 'update' です。このログコマンドがテーブル
を更新するのか、テーブルに情報を追加するのかを指定します。

三番目の引数は、この SQLLog ステートメントが影響するテーブルの名前です。

四番目の引数はデータベースクエリの実体です; これは二番目の引数の形式に適
合すべきです。有効な meta-sequence は、次が有効でないことを除いて、正確
に 'LogFormat' 命令に等しいです:

  %{FOOBAR}e:  'LogFormat' では、環境変数 'FOOBAR' の内容を記録します。
	       これは mod_sql では有効ではありません。
  %{format}t:  これら2つの meta-sequence はローカルサーバ時刻を記録しま
   and %t   :  す; データベースは時刻を得る他の方法を確実に提供していま
	       す; たとえば、MySQL は now() 関数を提供します。

次は 'LogFormat' meta-sequene に対する追加です:

  %d        :  現在の作業ディレクトリ、または存在しない場合は '-'。

例:

  SQLLog PASS update users "count=count+1 where userid='%u'"

replicates 'SQLLoginCountField count';  if the current user was 'aah',
this would translate into the query "update users set count=count+1
where userid='aah'".  This query would run whenever a user was first
authenticated.

  SQLLog CWD update users "cwd='%d' where userid='%u'"

replicates the logging side of 'SQLLogDirs cwd';  if the current user
was 'aah' and my current working directory were '/tmp', this would
translate into the query "update users set cwd='/tmp' where
userid='aah'".  This query would run whenever a user was first
authenticated. 

  SQLLog RETR,STOR insert filehistory "'%f', %b, '%u@%v', now()"

would log the name of any file stored or retrieved, the number of
bytes transferred, the user and host doing the transfer, and the time
of transfer (at least in MySQL).  This would translate into the query
"insert into filehistory values ('whateverfile', 12345,
'aah@xxxxxxxxxx', '21-05-2001 20:01:00')"


Notes: 

The second and third arguments could easily have been folded into the
query-string;  the only reason they're separated is to provide a small
amount of safety;  otherwise queries like 'DELETE ...' or 'DROP
TABLE..' or 'SELECT..' or what have you could potentially be passed.

'SQLLog' is intended to become the only method of logging from
mod_sql; it currently supercedes the 'SQLLoginCountField' directive,
and with the addition of the (as-yet-unimplemented) 'SQLShowInfo'
directive, it will replace the 'SQLLogDirs', 'SQLLogHits',
'SQLLogHosts', and 'SQLLogStats' directives. 



-------------------
SQLLogDirs

Syntax: SQLLogDirs on|off
Default: 
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

最後にユーザが変更したディレクトリの記録を有効にします。これはすべての 
CHDIR コマンド後に行なわれます - "/" への初期ログインはカウントされませ
ん。また、最後のディレクトリは次のの形式でログイン中に表示されます:

230 "/pub/debian/Incoming" was last directory. 

-------------------
SQLLogHits

Syntax:
Default:
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility:

-------------------
SQLLogHosts

Syntax:
Default:
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility:

-------------------
SQLLogStats

Syntax:
Default:
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility:

-------------------
SQLLoginCountField

Syntax: SQLLoginCountField fieldname
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

増加するログインカウンタを保持するユーザテーブルのフィールドを記述します。
各 PASS コマンドの成功直後に、このフィールドが増加します。

-------------------
SQLMinID

Syntax: SQLMinID minimumid
Default: 999
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

SQLMinID は SQLMinUserGID と SQLMinUserUID の両方を素早く設定する方法で
す。これらの値はユーザの GID と UID を取り出す時はいつもチェックされます。
'SQLMinUserGID' と 'SQLMinUserUID' 命令を見てください。

-------------------
SQLMinUserGID

Syntax: SQLMinUserGID minimumuid
Default: 999
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

SQLMinUserGID はユーザの GID を取り出す時はいつもチェックされます。GID 
用に取り出された値が SQLMinUserGID の値よりも小さい場合、
'SQLDefaultGID' の値として報告されます。

-------------------
SQLMinUserUID

Syntax: SQLMinUserUID minimumuid
Default: 999
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

SQLMinUserUID はユーザの UID を取り出す時はいつもチェックされます。UID 
用に取り出された値が SQLMinUserUID の値よりも小さい場合、
'SQLDefaultUID' の値として報告されます。

-------------------
SQLPasswordField

Syntax: SQLPasswordField fieldname
Default: password
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

ユーザのパスワードを保持するユーザテーブルのフィールドを記述します。

-------------------
SQLProcessGrEnt

Syntax: SQLProcessGrEnt on|off
Default: on
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.2 or later

'on' の場合、mod_sql は「正しく」setgrent, getgrent, endgrent 呼び出しを
内部的に処理します。

'off' の場合、mod_sql は [set|get|end]grent 呼び出しを内部的に処理*しま
せん*。多くのグループがあるサイトでは、これはログインの速度を劇的に増し
ます。グループメンバーシップによるアクセス制御や機能制御能力を削除します。

-------------------
SQLProcessPwEnt

Syntax: SQLProcessPwEnt on|off
Default: on
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.2 or later

'on' の場合、mod_sql は「正しく」setpwent, getpwent, endpwent 呼び出しを
内部的に処理します。

'off' の場合、mod_sql は [set|get|end]pwent 呼び出しを内部的に処理*しま
せん*。多くのグループがあるサイトでは、これはログインの速度を劇的に増し
ます。

-------------------
SQLRatios

Syntax:
Default:
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility:

-------------------
SQLShellField

Syntax: SQLShellField fieldname
Default: shell
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

ユーザのシェルを保持するユーザテーブルのフィールドを記述します。このフィー
ルドが存在しなかったり、クエリの結果が NULL の場合、シェルは "" として報
告されます。

-------------------
SQLUidField

Syntax: SQLUidField fieldname
Default: uid
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

ユーザの UID を保持するユーザテーブルのフィールドを記述します。UID がデー
タベースから取り出されるとき、SQLMinUserUID の値に対してチェックされます。
データベースが値を持っていない(カラムがない)場合、または取り出された値が 
SQLMinUserUID よりも小さい場合、ユーザの UID は SQLDefaultUID に設定され
ます。

-------------------
SQLUserTable

Syntax: SQLUserTable tablename
Default: users
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

ユーザ情報を保持するテーブルの名前を記述します。

-------------------
SQLUsernameField

Syntax: SQLUsernameField fieldname
Default: userid
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

ユーザの userid を保持するユーザテーブルのフィールドを記述します。

-------------------
SQLWhereClause

Syntax: SQLWhereClause whereclause
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

この命令は 'SQLKey' と 'SQLKeyField' を非難します。

すべてのユーザクエリに追加する where 節を記述します(これはグループクエリ
には影響しません)。where 節はすべての適切な句読点を含んでいなければなり
ません。そして、'and' で始まっていてはいけません。

古い形式の 'SQLKey' と 'SQLKeyField' 命令からの切り替えの例。次を持って
いた場合:

SQLKey           true
SQLKeyfield      LoginAllowed

現在は次を使用してください:

SQLWhereClause   "LoginAllowed = 'true'"

これはすべてのユーザ関連クエリに次の文字列を追加します。

" and (LoginAllowed = 'true')"

-------------------


========================
5. 非難される命令
========================

The following directives are DEPRECATED.  Their functionality has been
subsumed by one or more of the directives above.  They are presented
here for historical reasons, but when the ProFTPD 1.3 release cycle
begins they will no longer be supported.


-------------------
MySQLInfo

Syntax: MySQLInfo hostname sqluser sqlpass dbname
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql ( prior to 1.2.0, mod_mysql )
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLConnectInfo instead.

Configures the MySQL database driver (the database may be remote). A
connection isn't made until use of a SQL feature requires it, after
which it may be held open for the lifetime of the FTP session
depending on the directives in use. Use `""' to specify a null
password.

-------------------
PostgresInfo

Syntax: PostgresInfo hostname [sqluser sqlpass] dbname
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql ( prior to 1.2.0, mod_pgsql )
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLConnectInfo instead.

Configures the Posgresql database driver (the database may be
remote). A connection isn't made until use of a SQL feature requires
it, after which it may be held open for the lifetime of the FTP
session depending on the directives in use. 

Examples:

PostgresInfo myserver.example.com proftpd wibble ftpusers

PostgresInfo myserver.example.com ftpusers

-------------------
PostgresPort

Syntax: PostgresPort port-number
Default: 5432
Context: server config, <Global>, <VirtualHost>
Module: mod_sql ( prior to 1.2.0, mod_pgsql )
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLConnectInfo instead.

Specifies which TCP/IP port to use for connecting. Default is 5432, or
UNIX socket for localhost. 

Example:

PostgresPort 3306

-------------------
SQLEmptyPasswords

Syntax: SQLEmptyPasswords on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLAuthTypes instead.

Specifies whether an empty (non-NULL but zero-length) password is
accepted from the database. Default is no, and truly NULL passwords are
never accepted. If the retrieved password is empty then whatever
password the user typed is accepted as valid.

Example:

SQLEmptyPasswords on

-------------------
SQLEncryptedPasswords

Syntax: SQLEncryptedPasswords on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLAuthTypes instead.

Specifies whether the password in the database may be in UNIX crypt()
format. 

-------------------
SQLKey

Syntax: SQLKey value
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLWhereClause instead.

Sets the value that the SQLKeyField needs to match for user queries.

-------------------
SQLKeyField

Syntax: SQLKeyField fieldname
Default: none
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0.rc2 and later

This directive is DEPRECATED.  Please use SQLWhereClause instead.

Sepcifies the field in the user table used for matching against SQLKey.

-------------------
SQLPlaintextPasswords

Syntax: SQLPlaintextPasswords on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0rc2 and later

This directive is DEPRECATED.  Please use SQLAuthTypes instead.

Specifies whether to accept plaintext passwords from the database.

-------------------
SQLSSLHashedPasswords

Syntax: SQLSSLHashedPasswords on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

This directive is DEPRECATED.  Please use SQLAuthTypes instead.

Specifies whether to accept passwords of the form
{digestname}hashedpassword from the database.  This directive is only
available if you define 'HAVE_OPENSSL' when you compile proftd and you
link with the OpenSSL 'crypto' library.  As an example, any of the
following password entries in the database would match if the user
typed the password 'testpassword':

{SHA}IoFZRnP0iujh/70lps6DjKPgwkk=
{SHA1}i7YRj4/Wk1rQh2o740pxfTJwj/0=
{MD2}nS6iguewvAdrCnOMyQjB1w==
{MD4}5wsGtJCkyXBzDJoVsQKjSg==
{MD5}4WsquNEjFL9O+9YgOQbqbA==

-------------------
SQLScrambledPasswords

Syntax: SQLScrambledPasswords on|off
Default: off
Context: server config, <Global>, <VirtualHost>
Module: mod_sql
Compatibility: 1.2.0 and later

This directive is DEPRECATED.  Please use SQLAuthTypes instead.

Specifies whether to accept passwords in a backend specific format.
For the MySQL backend, this means 'PASSWORD()' scrambled passwords.
For the Postgres backend, this check does nothing.

-------------------


================================================
6. mod_sqlpw v.2.0 から mod_sql v.3.0 への変更
================================================

2001-02-10: bumped all versions to 3.0

2001-02-09: changed name to mod_sql; reflects the fact we do logging and
	    a variety of other fun things in here, besides
	    authentication

2001-02-08: Implemented SQLAuthTypes, new defines for random
	    encryption schemes, et al.

2001-02-08: Caused all deprecated directives to log messages to debug
	    and to syslog

2001-02-08: Changed all directives to go through specific handlers
	    rather than directly through generic handlers

2001-02-08: Created all missing auth functions as no-ops

2001-02-08: Style changes, shifted functions around, added some
	    comments 

2001-02-08: Added internal #defines for debug logging, and changed all
	    log_debug calls to use the new #defines.

2001-02-07: Fixed Bug #405 -- "SQLAuthoritative directive is broken"

2001-02-07: Fixed Bug #446 -- "nonstandard C code in mod_sql" 

2001-02-07: Fixed Bug #458 -- "mysql.h requirement breaks module 
	    independence"

2001-02-07: Fixed Bug #438 -- "MD5 passwords with mod_sql do not work
	    in latest CVS"

2001-02-07: Fixed Bug #330 -- "Cached passwords are not cleared when user
	    attempts to change login id"

2001-02-07: Fixed Bug #459 -- "Feature Request: add ability to handle 
	    {digestname}hashedpassword passwords.."

2001-02-06: <aah@xxxxxxxxxx> took over maintainership

2000-03-16: Added SQLKeyField and SQLKey directive, which should allow
	    authentication of different logins for different
	    VirtualHosts to be in the same database table. Jake
	    Buchholz <jake@xxxxxxxxxx>

1999-09-19: v2.0: Backend directives split into mod_mysql. Runtime API
	    added.  Username/passwords now escaped for
	    SQL. <johnie@xxxxxxxxxx>

1999-09-16: v1.0: Added documentation, made directives more generic
	    ("MySQL" -> "SQL" except for MySQLInfo).  Dir part of
	    SQLLogDirs finally made optional. <johnie@xxxxxxxxxx>

1999-06-01: v0.3: fixed segfault, changed 'strncmp' typo which
	    should have been copy.  Made uid/gid support
	    optional. <johnie@xxxxxxxxxx>
   
1999-05-03: v0.2: Removed dead code, fix bug with interaction with
	    anon-user support.  Added MySQLLogHits and MySQLHomedir
	    directives.  Fixed atoi() invocation that could
	    segfault. Copious debugging code
	    added. <johnie@xxxxxxxxxx>

1999-04-09: v0.1: Initial attempt (mod_mysql). <johnie@xxxxxxxxxx>

=========
7. 謝辞
=========

* Johnie Ingram <johnie@xxxxxxxxxx> for the original mod_sqlpw.
* TJ Saunders && Jesse Sipprell for dealing with my inane questions.
* John Morrissey for mod_ldap, which lit the way, here and there.
* Zeev Suraski <bourbon@xxxxxxxxxx> for the Apache
  mod_auth_mysql module, which informed the 'SQLAuthTypes' directive.

=========
8. 作者
=========

mod_sqlpw was originally written and maintained by Johnie Ingram 
<johnie@xxxxxxxxxx>.

mod_sql is based on mod_sqlpw and shares much of the same code.  It
is being developed and maintained by Andrew Houghton <aah@xxxxxxxxxx>

Please file any bug reports/suggestions/feature requests with the ProFTPD 
bug database at http://www.ProFTPD.org


[前][次][番号順一覧][スレッド一覧]

      4489 2001-10-16 18:33 ["Taro Yamamoto" <tar] Proftpd + qmail + vpopmail              
      4492 2001-10-16 21:10 ┗[Shin-ichi Tsurunaga ]                                       
      4497 2001-10-17 08:45  ┗["Taro Yamamoto" <tar]                                     
      4498 2001-10-17 08:56   ┣["Taro Yamamoto" <tar]                                   
      4505 2001-10-18 01:44   ┗[Shin-ichi Tsurunaga ]                                   
      4509 2001-10-18 09:40    ┗["Taro Yamamoto" <tar]                                 
      4511 2001-10-18 14:06     ┗["Taro Yamamoto" <tar]                               
      4524 2001-10-19 19:53      ┗[Shin-ichi Tsurunaga ]                             
      4525 2001-10-20 10:21       ┗["Taro Yamamoto" <tar]                           
      4526 2001-10-20 17:29        ┗["Taro Yamamoto" <tar]                         
      4527 2001-10-20 18:18         ┗[Shin-ichi Tsurunaga ]                       
      4528 2001-10-21 01:26          ┣[Shin-ichi Tsurunaga ]                     
      4529 2001-10-21 02:12          ┣["Taro Yamamoto" <tar]                     
      4531 2001-10-21 13:05          ┃┗[Shin-ichi Tsurunaga ]                   
      4532 2001-10-21 15:40          ┃ ┗["Taro Yamamoto" <tar]                 
      4533 2001-10-21 22:49          ┃  ┗["Taro Yamamoto" <tar]               
      4535 2001-10-22 00:20          ┃   ┣["Taro Yamamoto" <tar]             
      4536 2001-10-23 04:05          ┃   ┗[Shin-ichi Tsurunaga ]             
      4537 2001-10-23 07:53          ┃    ┗["Taro Yamamoto" <tar]           
      4538 2001-10-23 11:26          ┃     ┗[Shin-ichi Tsurunaga ]         
      4543 2001-10-23 21:43          ┃      ┗["Taro Yamamoto" <tar]       
      4556 2001-10-25 09:27          ┃       ┗["Taro Yamamoto" <tar]     
      4559 2001-10-25 10:53          ┃        ┣[Shin-ichi Tsurunaga ]   
      4584 2001-10-27 00:34          ┃        ┃┗["Taro Yamamoto" <tar] 
      4595 2001-10-29 12:29          ┃        ┃ ┗[Shin-ichi Tsurunaga ]   
      4596 2001-10-29 15:26          ┃        ┃  ┣[Seiji Tateyama <tate]     
      4600 2001-10-30 02:29          ┃        ┃  ┃┗["Taro Yamamoto" <tar]       
      4599 2001-10-30 02:25          ┃        ┃  ┗["Taro Yamamoto" <tar]     
->    4564 2001-10-25 23:59          ┃        ┗[とみたまさひろ <tomm]   
      4585 2001-10-27 00:38          ┃         ┗["Taro Yamamoto" <tar] 
      4530 2001-10-21 02:21          ┗["Taro Yamamoto" <tar]