Pureftp

virtualユーザーをサポートしていること、安定していることを考えpureftpを使います。
ドキュメントは、いろいろあるのですが、なかなか必要なことが見つからないので、ちょっとサイトにあるドキュメントだけでは混乱するかもしれません。

portからインストールします。

/usr/port/ftp/pure-ftpdにあります。

このディレクトリで
make install , clean

portでインストールすると
confファイルが
/usr/local/etc/pure-ftpd.conf.sampleが作成されます。 pure-ftp.confとしてコピーしてください。
portによる起動ファイルは、自動的にこのconfファイルを読み込みます。
コンパイル時にいろいろとオプションを指定する必要はありません。

起動ファイルは、・usr/local/etc/rc.d/pure-ftpd.shとして作成されます。 変更の必要はありません。

まず起動するために必要なユーザーを作成します。

logをsysylogで作成するようにするために ftpというユーザーを作成します。
groupadd ftp
useradd -g ftp -d /dev/null -s /etc ftp

このsyslogの設定ですと吐き出されるlogファイル名はxferlogになってしまいますので

ftp.info /var/log/xferlog を /var/log/pureftpd.logに変更します。

これでlogファイルは、 /var/log/pureftpd.log となります。
syslogは指定するファイルがないと作成しません。
vi /var/log/pureftpd.log
で空のファイルを作成しましょう。

Altlogで指定するだけでは、なぜかlogファイルが作成されるのですが、中身がない。
多分portでの指定の変更で動くのでしょうが、 面倒なことはしません。 pure-ftpd.confの中でapache形式を指定しています。

次はvirtual userのための userとgroupを作成します。 このuserがないと、ftpをアクセスするためのユーザーを追加できません。

groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
次のユーザーは、ftpでどのディレクトリにも移動でき、何でもできるようにしたroot権限のユーザーです。 
groupadd ftpadmin
useradd -g ftpadmin -d /dev/null -s /etc ftpadmin

このuser group idはpure-ftpd.confで使用しますので、 vipwでユーザー番号 uid group番号を変更します。

下のほうに
ftpadmin:*:xxxxx:xxxxx:............
とあるxxxxxをどちらも100番にします。

ftpadmin:*:100:100:..............
もし100が使われていたらerrorになり、vipwは終了できません。 100に近い番号を指定してください。
この値は、あとで pure-ftpd.confで使用します。

このftpadminはpure=pwで追加されうユーザーです。 -Dをつけてください。
問題はこのftpadminが所有するディレクトリ以外には書き込みができません。
security上やむ終えないのでしょうか??


では次にpure-ftpd.confを修正します。
Pureftpdの日本語のオプション一覧は下記にあります。
http://homepage.mac.com/proc/pureftpd/pureftpd-option.html

vi /usr/local/etc/pure-ftpd.conf

ChrootEveryone yes を yseにします。
この行のコメントマークを削除します。 # TrustedGID 100
TrustedGID 100

次の行をyesにすると、syslogを変更しなくても動作するかもしれません??

BrokenClientsCompatibility no

次のところのpureDBをとりあえず使います。
# PureDB user database (see README.Virtual-Users)

PureDB /etc/pureftpd.pdb

aragoiを使うときには

pamを使います。

UnixAuthentication yes これはFreeBSdのuserのアクセスを許可するかです。

Anonymouアクセス
UnixAuthentication yes

Anonymouを許可するためには、systemのpasswordファイルでftpを設定していますが、ここでAnonymouのためのディレクトリを指定してください。
 virtual userを設定して、Anonymouの設定をするということは、anonymousのhomeディレクトリは全てのdomainに共通になってしまいます。
とても賢い方法ではないと思われます!  一度mailinglistに聞いてみます。 最近の傾向としてftpでファイルを落とすより、httpで落とすのが多いようです。
uploadのputfileを利用しているものが多いようです。 anonymousが必要か考えてください??

logのフォーマットをapache風にします。
 AltLog                     clf:/var/log/pureftpd.log

vi /var/logpureftpd.log
で中身のないファイルを作りましょう。 これがないと書き込まれません。



これであとはユーザーを追加する作業です。
コマンドはpure-pw useradd です。
         pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
-D/-d <home directory> [-c <gecos>]
[-t <download bandwidth>] [-T <upload bandwidth>]
[-n <max number of files>] [-N <max Mbytes>]
[-q <upload ratio>] [-Q <download ratio>]
[-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]...]
[-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]...]
[-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]...]
[-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]...]
[-y <max number of concurrent sessions>]
[-z <hhmm>-<hhmm>] [-m]

joeを追加します。 -mオプションで自動的に、pureftp-passwdファイルからpureftp-dbを作成します。
-mオプションの代わりに、 pure-pw mkdb でもおなじです。
            pure-pw useradd joe -m -u ftpuser -d /home/ftpusers/joe

それぞれのユーザーに必要な制限などをオプションとして渡すことができます。
ユーザーのhomeディレクトリを -dで指定します。 -dでchrootされそれ以下のディレクトリしかアクセスできません。
-Dはすべてのディレクトリをアクセスできます。

passwordを二回聞かれます。

root権限のユーザーは -gも指定します。

pure-pw useradd joe -m -u ftpadmin -g ftpadmin -d /home/ftpusers/joe

現在登録されているユーザーを見るには
pure-pw list で登録されているユーザーの表示

pure-pw usermod joe -n 1000 -N 10 で ユーザーの変更

pure-pw show joe ユーザーの情報表示

pure-pw userdel joe ユーザーの削除

pure-pw mkdb でdbファイルの作成 -m オプションと同じ

テストのための起動
/usr.local.etc/rc.d/pure-ftpd.sh start
これで
cat /var/log/pure-ftpd.log
に起動されたとの情報がかかれているかを見る。

自動起動させるためには、

vi /etc/rc.conf
に次の企業があるかを確認。

pureftpd_enable="YES"

=の前後にspaceがあると動作しないようです!!!

これでrebootしてftpをアクセスして動作を確認してください。
ipfilterでアクセスの制限を必ずかけてください。