« 2002年11月 | メイン | 2003年02月 »

2003年01月16日

pure-ftpdでftpアカウント。MySQL版

pure-ftpdは標準でDBをつかったアカウント管理ができ、quata機能もある。 簡単な設定だし、かなり便利です。 認証には、MySQL、PostgreSQL、内蔵のVirtua User、独自ハンドラが使えますが、これはmysqlでの設定例。 本家のReadMeはここ
./configure --with-altlog --with-paranoidmsg --with-quotas --with-throttling --with-mysql
make install-strip --prefix=/usr
こまかいオプションはマニュアルを参考にしてください。
make install-strip
でインストール
/usr/local/sbin/pure-ftpd -b -A -B -E -I 5 -j -l mysql:/etc/pure-ftpd/mysql.cfg -l unix
このOptionで起動。 -b NLST対策 -A chroot -B backgroudで起動 -E 認証ユーザのみ -l タイムアウト -j 自動的にディレクトリを作成 -l 認証 ここでは認証はMysqlでの認証を先に、/etc/passwdでの認証をあとでおこないます。 /etc/pure-ftpd/mysql.cfg はMySQLの設定ファイル [code] MYSQLSocket /var/lib/mysql/mysql.sock MYSQLUser dbftpd MYSQLPassword hoge MYSQLDatabase dbftpd MYSQLCrypt cleartext MYSQLGetPW SELECT password FROM users WHERE user="\L" and NOW() >= start_date and NOW < expire_date and active='Y' MYSQLGetUID SELECT uid FROM users WHERE user="\L" and NOW() >= start_date and NOW < expire_date and active='Y' MYSQLGetGID SELECT gid FROM users WHERE user="\L" and NOW() >= start_date and NOW < expire_date and active='Y' MYSQLGetDir SELECT concat(dir,"/public_html") FROM users WHERE user="\L" and NOW() >= start_date and NOW < expire_date and active='Y' MYSQLGetQTASZ SELECT ftpquota FROM users WHERE user="\L" and NOW() >= start_date and NOW < expire_date and active='Y' [/code] MySQLのテーブル [code] create database dbftpd; grant select,insert,update,delete on dbftpd.* to dbftpd@localhost identified by 'hoge'; use dbftpd; CREATE TABLE users ( user varchar(16) not null default '', password varchar(64) not null default '', uid int not null default '501', gid int not null default '501', dir varchar(128) not null, shell varchar(128) not null default '/bin/sh', mbox_host varchar(64) not null default '', start_date date not null default '0000-00-00', expire_date date not null default '2030-01-01', active enum('Y','N') not null default 'Y', ftpquota int not null default '5', quota_size int not null default '10240', key user(user), key shell(shell), key home(home), key start_date(start_date), key expire_date(expire_date), key active(active) ); [/code] んで、ユーザをつくってみる。
insert into users set user='test', password='383838' dir='/home/sites/test';
ディレクトリをつくる。
mkdir /home/sites/ユーザ名
もち、上で設定したuid、gidでアクセスできること。 テストはしていないので、これでできるかどうかは、わからない。 テーブルにその他の項目があるのは、qmailとの連係を考えてのこと。こっちはまだ研究中。

2003年01月11日

Squidログサイズオーバー

access.logのサイズが2GBになってました。
Squid Parent: child process 4064 exited due to signal 25つーのは、そういうことでした。

ログの切り分けを1日2回に変更しています。