[Software] Pureftpd & Mysql

其實這個功能 Proftpd 也可以作的到那為什麼我還要用 pureftpd 去作呢? 因為他可以設個人的上下傳的速度限制,這對架很多使用者的FTP很好用:P 不過我想這應該是 Proftpd沒有的功能吧?

好了,那要怎麼開始呢?當然就是去抓原始碼了,說真的以下我是用cygwin 去跑的,不過在linux 上應該也是一樣的。

www.pureftp.org 這裡是官方網站,這裡就可以抓了
然後,當然啦,你一定要裝好 mysql 這些都準備好了,就可以開始了

$ tar -xzvf pure-ftpd-1.0.14.tar.gz
$ cd pure-ftpd-1.0.14
$ env CFLAGS="-O2 -march=pentium -pipe" LDFLAGS="-static -s" ./configure
–with-everything –with-brokenrealpath –without-shadow –with–noroot
–with-probe-random-dev –without-ascii –with-mysql –with-language=traditiona
l-chinese
$make all;make install

因為我是用cygwin 所以要下一些必要的參數,如果你是在linux 下編譯的話,可以挑選你要的來作就好了,其中最重要的是那個 –with-mysql 這個就可以把 mysql moudle 編進去了。他的參數可以去參考原文的說明。

然後你可以在他的原始碼的目錄找到 pureftpd-mysql.conf 這個檔,這個檔就是你的設定檔,其中最重要的幾個參數解釋如下:

# mysql 的位置
MYSQLServer 127.0.0.1

# mysql 的 port
MYSQLPort 3306

# 這應該是linux 用的,直接連線的,如果你有設這個,而你的mysql又不在本機的話,
# 你就要把這個關掉,而設上面的
MYSQLSocket /tmp/mysql.sock

# mysql 登入名稱
MYSQLUser root

# mysql 登入密碼
MYSQLPassword rootpw

#你要用的 mysql table
MYSQLDatabase pureftpd

# 存在mysql 裡每一個使用者的資料
# 這邊有四種格式:
# cleartext 明碼
# crypt 系統crypt
# md5
# password mysql的password 編碼.
MYSQLCrypt cleartext

#這一行是pureftpd 連mysql 取得password
MYSQLGetPW SELECT Password FROM users WHERE User=“L”

#使用者的UID
MYSQLGetUID SELECT Uid FROM users WHERE User=“L”

# 預設的 UID,如果設了這個,會蓋掉上面的MYSQLGetUID
#MYSQLDefaultUID 1000

#從mysql 取得gid
MYSQLGetGID SELECT Gid FROM users WHERE User=“L”

#同上,也是取得GID,同樣的,也會蓋掉上面的MYSQLGetGID
#MYSQLDefaultGID 1000

# 查找使用者的起始目錄
MYSQLGetDir SELECT Dir FROM users WHERE User=“L”

好了,基本上,接下來,我們再設定 mysql 就可以了。首先建mysql 使用者和密碼,都要和上面的一樣。再建一個table:

CREATE TABLE users (
User varchar(16) NOT NULL default ‘’,
Password varchar(64) NOT NULL default ‘’,
Uid int(11) NOT NULL default ‘-1’,
Gid int(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default ‘’,
PRIMARY KEY (User)
);

其他的就照著打就好了,那要怎麼啟動pureftpd呢,其實有好幾種方法,不過我們先用standalone的方法啟動測試。

$ ./pure-ftpd -l mysql:/etc/pureftpd-mysql.conf &

這樣就可以了。
其他的設定就請你們看原始說明檔吧。