2004年03月17日

mod_quotatabでLogin失敗

こっちで作ったは良いけど使うプロジェクトの方が延び延びで放置されていたmod_quotatab入りのProFTPdなサーバですが、やっとこ日の目を見ることになりました。

そうしたら問題が発生。

Unixとかの素のFTPコマンドでログイン出来ない_| ̄|○

今までテストはWindows上のクライアントとかlftpを使っていたおかげでばっちり見逃していました(;´д`)ノ
で調べてみると

Mar XX xx:xx:22 mod_quotatab/1.2.11[xxxxx]: found limit entry for user 'hoge'
というログインメッセージがじゃまをしているようです。

どうやったら抑制出来るかなぁと設定ファイルを見直していたら・・・

# Quota情報をユーザに通知するかどうか
QuotaShowQuotas on
とりあえずオフにしてみると直った( ̄▽ ̄)ノ
と喜んで居たらついさっき「再発したよ」と連絡が_| ̄|○

しょうがないのでソース追ってみたところ、どうもログに出すべきメッセージが、なぜか応答メッセージに紛れているようです。
とりあえず、ログを書き出す関数は設定ファイルにquotatab用のログファイル名が無ければ何も動作しないようなので、時間が無かったこともあり

# mod_quotatabの動作状況のログを記録するファイル名
# QuotaLog /var/log/proftpd-quota-log
としてひとまずの対処としました。

これで直ればいいなぁ・・・

Posted by Takuchan at 12:48 | コメント (0) | トラックバック(0)

2004年01月23日

ProFTPd1.2.9+mod_quotatab+mysql

今度は放っておくとパンクしかねないFTPサーバを運用することとなり、quotaを掛ける事となりました。
んで、例によって運用ツールをperlで書いてユーザの作成もquotaの調整もリモート管理したいので設定系は全部mysqlに任せることにして、mod_quotaの実装方法を探していると 1.2.8で動かなかったですと(;´д`)ノ
でも、もうちょっと調べてみたらハックして1.2.9でも動くようにしている方を発見 そのページを見ていたところ
でも私的には、mod_quotatab のほうが良いmoduleだと思います。
mod_quotatab?

調べてみると通常のquotaだけではなく、ダウンロード転送量制限や、総転送量制限、転送ファイル数制限なども掛けられるようでなんだかよさげだったのでこっちで実装してみることにしました。
なお、MySQL上でのテーブルの実装方法は運用ツールの作成の手間を省くために独自の方法を用いてますので不具合があるかもしれません(^^;

続きを読む...

Posted by Takuchan at 10:28 | コメント (0) | トラックバック(1)

2004年01月13日

アップ終了時にMD5算出

どうもProFTPdにはmod_md5fsというファイルのアップロード完了時に自動でMD5を計算してファイル名.md5というファイルを作成してくれるモジュールがある模様

今のところの最新版
(ファイルへのリンクは.orgの方はほとんど切れているので.deに行くのが吉かも)

ナローバンドやノイズの多い回線からのアップロードが想定される場合やネットワーク的遠方からのアップロードがある場合に重宝しそうな感じですね

機会があったら一度インストールテストしてみようと思いますが、一番の問題はアップロードする人間がMD5を解しているかどうかだったり・・・

Posted by Takuchan at 19:44 | コメント (0) | トラックバック(0)

2003年12月21日

SQLRatios

ネタ切れなのでいつも通りのインチキ翻訳です(笑)

SQLRatios
【名称】SQLRatios -- SQLを用いたレート機能を有効にします
【書式】SQLRatios [on|off]
または: SQLRatios file-ratio file-creds byte-ratio byte-creds
【デフォルト値】
off
【設定できるコンテキスト】
server config, <VirtualHost>, <Global>

【この機能が含まれるモジュール】
mod_sql

【互換性】
不明(1.2.9では使用できています)

【説明】
mod_ratioを動作させるためのユーザごとのレート情報を格納します
Activates mod_ratio's storage of per-user ratio data.

レートに関する詳しい情報はmod_ratioのドキュメントを参考にしてください
See the mod_ratio documentation for more information on these fields and their meaning.

SQLRatiosを動作させるためにはユーザテーブルに次のフィールドを追加する必要があります。
This directive requires additional fields in the user table:

COLUMNTYPEDATA STORED
---------------------
fratenum 
fcrednum 
bratenum 
bcrednum 
上記は「on」を指定された場合のデフォルトのフィールド名称です。
The column names above are the default names used if SQLRatios is
set to "on".
(それぞれのフィールド名称を個別に指定することも可能です)

SQLRatiosはmod_rarioでのみ使用されます
This directive is used solely by mod_ratio.

mod_ratioが有効でない状態ではこの設定には全く効果はありません。
Without mod_ratio running, this directive will have no effect.

【関連項目】
Ratio

【使用例】
SQLRatios on

【原文のURL】
http://www.lastditcheffort.org/~aah/proftpd/mod_sql/src/README.mod_sql-4.0

Posted by Takuchan at 02:18 | コメント (0) | トラックバック(0)

2003年12月17日

mod_ratioって

の事例でダウンロード中に通信が切れた場合などどうなるのか調べてたくってソース読んでみて判ったんですが、これっておそらく本来の目的であるファイル交換には到底使えなさそうです。

だって一切レジュームを考慮してないので、それを有効にしているといくらでもダウンしたファイルサイズを詐称できちゃうし(笑)<ファイル数は詐称無理なんで今回使った分には問題ないですが

あと、追記に対応する関数も無いので、AllowOverwriteまともに使えません。
まぁ、両方とも無効にすればおそらくちゃんと動作しますが、あちこちでintやatoiを使ってるで多分2GBぐらいでまともに動かなくなると思います(笑)

まぁ、それでもやりたい人はそれで我慢するか、自分でハックしてくれということで( ̄▽ ̄)ノ

Posted by Takuchan at 20:22 | コメント (0) | トラックバック(0)

2003年12月16日

ProFTPd+mod_ratio+MySQL

ある日こんな相談を受ける
「FTPで利用者ごとにファイルを持っていける回数を制限したいんだけど、出来る?」
差し障りの無い辺りで要約すると、なんでもデータを提供するにあたってとりあえず、お試しで一定数持っていけるようにしたいらしい。
で、話がまとまればそのアカウントで、そのまま続けられる用にしたいらしい。

ProFTPd大好きなんでFTPdはとりあえず、ProFTPdで。
運用ツール作ることを考えるとmod_sqlははずせないとして、制限をかける手段はどうしようか・・・
最初SQLLogとSQLUserWhereClauseの組み合わせでいこうかなと思っていたら「制限超えてもログインはできるようにして欲しい」ですと(;´д`)ノ
まぁ、確かにリアルタイムデータなんで順調に増えるのを見せた方が良いんだろうけど・・・

さて、困って設定の一覧を見ていると

「SQLRetiosねぇ」

ちょっと調べてみるとクレジットが使えるっぽいんで、コレでいけそうかな。
(使用目的から考えて制限超えてもログインできるだろうし、アップロードは有効にさせるつもりが無いからユーザ側で勝手に枠増やせそうも無いし)

とりあえず、実装してみないとテストもできないので、実装してみることにしました。

続きを読む...

Posted by Takuchan at 20:05 | コメント (0) | トラックバック(0)

2003年12月10日

SQLHomedirOnDemand

SQLHomedirOnDemand
【名称】SQLHomedirOnDemand -- ホームディレクトリを自動で作成します
【書式】SQLHomedirOnDemand [on|off]
【デフォルト値】
off

【設定できるコンテキスト】
server config, <VirtualHost>, <Global>

【この機能が含まれるモジュール】
mod_sql

【互換性】
1.2.0 以降

【説明】
ログイン時にホームディレクトリが存在しない場合自動的に作成します。
Specifies whether to automatically create a user's home directory if it doesn't exist at login.

SQLでユーザを管理していて、ホームディレクトリをいちいち作成するのが面倒な場合に指定します。
SQLで指定したホームディレクトリだけが対象になるのかはテストしてないので判りません。

【関連項目】

【使用例】
SQLHomedirOnDemand on

【原文のURL】
http://www.lastditcheffort.org/~aah/proftpd/mod_sql/src/README.mod_sql-4.0

・・・お察しの通り、ネタがないのでインチキ翻訳の出番です(笑)
誤訳・誤用があれば遠慮無くコメントくださいm(_ _)m

Posted by Takuchan at 14:28 | コメント (0) | トラックバック(0)

2003年12月07日

ProFTPd+MySQL+MD5password

とりあえず、実装してみて動いたので作業ログを。
ちなみに、使ったProFTPdのバージョンは1.2.9です。
まず、mod_sqlとmod_sql_mysqlを含めてコンパイルが必要ですがそれについてはこっちを参照してください。

で、次にMySQLにDBなどを登録しますがMySQL自体についてはわかっているものとして簡単に
まず、ProFTPd用のDBを作成します。
次にDBアクセス用にユーザを作成して先ほど作成したProFTPd用のDBの参照権限のみ与えます。
(面倒なんでここら辺はかねやんMySQLで、さっくり作りましたんでログなしで(笑))

で、次にProFTPdの認証用のテーブルを作成します。

CREATE TABLE groups (
groupname VARCHAR(30) NOT NULL ,
gid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
members varchar(255) default NULL,
PRIMARY KEY ( groupname ),
UNIQUE KEY gid (gid)
);

CREATE TABLE users (
userid varchar(30) NOT NULL,
password varchar(30) NOT NULL,
uid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
gid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
homedir varchar(255) default NULL,
shell varchar(255) default '/bin/true',
PRIMARY KEY (userid),
UNIQUE KEY uid (uid)
);

で、さっくりテーブルを作ったら、適当にグループを登録して、それから適当にユーザを追加します。
INSERT INTO groups VALUES ('グループ名',GID,'');
INSERT INTO users VALUES ('ユーザ名','パスワード',UID,GID,'HomeDir','/bin/true');
ここではいくつか注意点があり、まずUID、GIDは可能な限り1000よりも大きな数にしてください。
(999以下のIDはデフォルトでは使用できないようになっています。
どうしても使いたい場合はproftpd.confで「SQLMinUserUID・SQLMinUserGID」で新たな最小値を指定してください)

次にパスワードですが、MD5パスワードを使う場合は、先にパスワードのハッシュを生成しなければなりません。

続きを読む...

Posted by Takuchan at 00:24 | コメント (0) | トラックバック(0)

2003年11月30日

ルータ越え(2)

ルータ越えでDMZを使わない場合やSSHにFTPのデータポートを通すような場合に使うPassivePortsのリファレンスのイカサマ日本語訳も載せておきます。

PassivePorts
【名称】PassivePorts -- 使用するFTP DATAポートを指定します
【書式】PassivePorts [ PassivePorts min-pasv-port max-pasv-port]
【デフォルト値】
none (何も設定されていません)

【設定できるコンテキスト】
server config, <VirtualHost>, <Global>

【この機能が含まれるモジュール】
mod_core

【互換性】
1.2.0rc2 以降

【説明】
PassivePortsはクライアントからPASVコマンドが送られてきた際に選択するポートの範囲を限定します。
PassivePorts restricts the range of ports from which the server will select when sent the PASV command from a client.

[訳自信なし(^^;]サーバは指定されているポート範囲の中から開けるポートが見つかるまでランダムに選択を行います。
The server will randomly choose a number from within the specified range until an open port is found.

[訳自信なし(^^;]もしも指定されたポート範囲の中で開けるポートが見つけられない場合、カーネルによって割り当てられたデフォルトのポートを使用します。そして同時にログにメッセージを残します。
Should no open ports be found within the given range, the server will default to a normal kernel-assigned port, and a message logged.

選択するポートは非特権ポート(1024以上)である必要があり、パッシブモードでの同時接続を十分処理することができる範囲を設定することを強く推奨します。(たとえば49152-65534のようなIANAで登録されている一時ポートを指定するなど)
The port range selected must be in the non-privileged range (eg. greater than or equal to 1024); it is STRONGLY RECOMMENDED that the chosen range be large enough to handle many simultaneous passive connections (for example, 49152-65534, the IANA-registered ephemeral port range).

【関連項目】

【使用例】
FTP非対応のルータを超えてFTPサーバを公開する場合
<VirtualHost xxx.xxx.xxx.xxx>
MasqueradeAddress DDNSのホスト名
PassivePorts 8021 8079
# ↑ルータでポートフォワードするIPの範囲(サーバをDMZに設定するなら不要)
</VirtualHost>

【原文のURL】
http://proftpd.linux.co.uk/docs/directives/linked/config_ref_PassivePorts.html

Posted by Takuchan at 00:30 | コメント (0) | トラックバック(0)

2003年11月26日

ルータ越え(1)

FTP非対応のルータ越えに必要な設定のイカサマ日本語訳をつらつらと

MasqueradeAddress
【名称】MasqueradeAddress -- クライアントに提示するサーバアドレスを設定します
【書式】MasqueradeAddress [ MasqueradeAddress ip-address|dns-hostname]
【デフォルト値】
none (何も設定されていません)

【設定できるコンテキスト】
server config, <VirtualHost>

【この機能が含まれるモジュール】
mod_core

【互換性】
1.2.2 以降

【説明】
[超意訳(ぉ] MasqueradeAddressを用いるとPassive(PASV)モードの際にクライアントに知らせるサーバのIPアドレスを指定できます。
(訳注:IPアドレスの他にダイレクトDNS(DDNS)などのホスト名も指定できますが、ホスト名はサーバ側でDNSやhostsを用いてIPアドレスに変換されてからクライアントに送られます。また、この設定が必要な人はおそらくルータを超えてFTPサーバにPASVモードでアクセスさせたい人でしょうから)前提条件としてそのサーバ(のFTPポート)がNATゲートウェイやポートフォワードによってネットワークから参照できる必要があります。

MasqueradeAddress causes the server to display the network information for the specified IP address or DNS hostname to the client, on the assumption that that IP address or DNS host is acting as a NAT gateway or port forwarder for the server.

【関連項目】

【使用例】
FTP非対応のルータを超えてFTPサーバを公開する場合
<VirtualHost xxx.xxx.xxx.xxx>
MasqueradeAddress DDNSのホスト名
PassivePorts 8021 8079
# ↑ルータでポートフォワードするIPの範囲(サーバをDMZに設定するなら不要)
</VirtualHost>

【原文のURL】
http://proftpd.linux.co.uk/docs/directives/linked/config_ref_MasqueradeAddress.html

Posted by Takuchan at 01:17 | コメント (0) | トラックバック(0)

その他のエントリ
DefaultChdir 2003年11月19日 15:32

アノニマスFTPでのデフォルトログイン先指定でこの前困ったので、イカサマ翻訳済みドキュメントを載せておきます。
(翻訳内容については一切責任もてません(^^;) DefaultChdir
【名称】DefaultChdir -- FTPセッション開始時のデフォルトディレクトリを指定します
【書式】DefaultChdir [ directory [group-e

SQL認証でOpenSSLを使う 2003年11月14日 09:08

先日苦労したProFTPdですが、syslogを見ると proftpd[18375]: XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) - mod_sql/4.10: error: no SQLAuthTypes configured といったエラーが残ってます。 まぁ、確かにSQLAuthTypes を設定してないのでどんなのが設定できるかなと調べてみると SQLAuthTypesSQLAuthTypes [ [OpenSSL]] [ [Crypt

ProFTPd1.2.9のRPM作成 2003年11月11日 16:59

ふる〜いディストリビューションのマシンの為に1.2.8のコンパイルで使ったspecファイルからProFTPd1.2.9のRPMを作ろうとビルドしてみたんですが、ビルド中に%{buildroot}/usr/sbin/proftpdが無いと怒られてしまいました。 おやっと思って%{buildroot}に行くと/usr/sbinと/usr/binが無い。 もしやと思って、ProFTPd1.2.9の