安裝Pure-FTPD(轉)

post0發表於2007-08-10
安裝Pure-FTPD(轉)[@more@]

對比了幾個FTP伺服器,發現還是Pure-ftpd好用,Proftpd空間配額都要打補丁,麻煩.

1.Download

不知國內的電信是幹嘛的,Pure-ftpd,Proftpd都被封了,這些人真是無聊.

可以透過代理上這兩個網站,隨便找一個國外的代理伺服器,設定好IE的連線就可以上了.

2.編譯安裝

#tar zxvf purexxxx.tgz

#cd purxxxxx

#./configure

--prefix=/usr/local/pureftpd

--with-mysql

--with-paranoidmsg

--with-welcomemsg

--with-uploadscript

--with-cookie

--with-virtualchroot

--with-virtualhosts

--with-virtualroot

--with-diraliases

--with-quotas

--with-sysquotas

--with-ratios

--with-ftpwho

--with-throttling

--with-language=simplified-chinese

這時,我們只用Mysql使用者認證,不用LDAP,也不用其這的.

#make

#make check

#make install

3.測試

#/usr/local/pureftpd/sbin/pure-ftpd &

執行後,用FTP登入一下看,此時是系統使用者認證.登入成功,表示Pure-FTPD安裝好了

4.與Mysql結合

由於編譯時帶了--with-mysql選項,所以,無需修改Pure-FTPD.

A.

先在Mysql中建一個FTP使用者表(和資料庫):

CREATE TABLE tblUser (

UserID int(11) unsigned NOT NULL auto_increment,

UserName varchar(50) NOT NULL default '',

UserPasswd varchar(50) binary NOT NULL default '',

UserUID int(11) NOT NULL default '14',

UserGID int(11) NOT NULL default '5',

UserDir varchar(250) NOT NULL default '',

UserQF int(10) NOT NULL default '500',

UserQS int(10) NOT NULL default '30',

UserStatus tinyint(1) unsigned NOT NULL default '1',

PRIMARY KEY (UserID),

UNIQUE KEY User (UserName)

) TYPE=MyISAM AUTO_INCREMENT=1 ;

說明

UserID 使用者ID

UserName 使用者名稱

UserPasswd 使用者密碼,用MD5加密

UserUID 使用者對應的系統ID,請注意,預設情況下,低於100的UID不可以登入

UserGID 使用者對應的系統組ID

UserDir 使用者主目錄

UserQF 使用者最大檔案數

UserQS 使用者最大空間M

UserStatus 使用者狀態,為1時可以使用(用SQL語句實現,見後面的Mysql.conf)

b.配置Pure-FTPD

我們用Pure-FPTD自帶的啟動指令碼啟動.

進入Pure-fptd的原始碼目錄

[root@linux pure-ftpd-1.0.15]# cd configuration-file

[root@linux configuration-file]# chmod u+x pure-config.pl

[root@linux configuration-file]# cp pure-config.pl /usr/local/pureftpd/bin

[root@linux configuration-file]# mkdir /usr/local/pureftpd/etc

[root@linux configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc

[root@linux configuration-file]# cd ..

[root@linux pure-ftpd-1.0.15]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/mysql.conf

[root@linux pure-ftpd-1.0.15]# cd /usr/local/pureftpd/etc

[root@linux etc]#vi pure-ftpd.conf

修改pure-ftpd.conf的配置,詳細配置見後面

[root@linux etc]#vi mysql.conf

修改Mysql連線的配置,詳細配置見後面

c.啟動:

#/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

d.測試

#groupadd ftpuser

#useradd -g ftpuser -s /sbin/nologin -d /ftp/ ftpwrite

#useradd -g ftpuser -s /sbin/nologin -d /ftp/ ftpread

#mkdir /ftp

#mkdir /ftp/ipaddr

#chown ftpwrite.ftpuser /ftp/ipaddr

加入兩個FTP系統使用者,假設ftpuser的GID為500,ftpwrite的UID為500,ftpread的UID為501

加入一個Mysql使用者:

UserID=100

UserName=ipaddr

UserPasswd=md5(ipaddr)

UserUID=500 (501時,使用者只讀)

UserGID=500

UserDir=/ftp/ipaddr

UserQF=500

UserQS=30

UserStatus=1

重啟PureFTPD,再用FTP客戶端測試

#killall pure-ftpd

#/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

e.自啟動.

可以將啟動指令碼寫入/etc/rc.d/rc.local裡,自啟動,但不太方便,

可以寫一個指令碼,如下:

#!/bin/sh

# Startup script for the FTP Server

#

# chkconfig: - 99 99

# description: FTP Serve

case "$1" in

start)

/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

;;

stop)

killall pure-ftpd > /dev/null

;;

*)

echo "Usage: `basename $0` {start | stop}" >&2

;;

esac

exit 0

:w /etc/init.d/pureftpd (儲存到/etc/init.d/pureftpd)

#chkconfig --add pureftpd

#chkconfig pureftpd on

f.使用者管理

用PHP寫一個程式管理Mysql表就行了.

附錄:

A.mysql.conf

MYSQLSocket /var/lib/mysql/mysql.sock

MYSQLUser sqluser

MYSQLPassword password

MYSQLDatabase kk

MYSQLCrypt md5

MYSQLGetPW SELECT UserPasswd FROM tblUser WHERE UserStatus=1 and UserName="L"

MYSQLGetUID SELECT UserUID FROM tblUser WHERE UserStatus=1 and UserName="L"

MYSQLGetGID SELECT UserGID FROM tblUser WHERE UserStatus=1 and UserName="L"

MYSQLGetDir SELECT UserDir FROM tblUser WHERE UserStatus=1 and UserName="L"MySQLGetQTAFS SELECT UserQF FROM tblUser WHERE UserStatus=1 and UserName="L"

MySQLGetQTAFS SELECT UserQF FROM tblUser WHERE UserStatus=1 and UserName="L"

MySQLGetQTASZ SELECT UserQS FROM tblUser WHERE UserStatus=1 and UserName="L"

B.pure-ftpd.conf

.....

MySQLConfigFile /usr/local/pureftpd/etc/mysql.conf

#把這個開啟就行了,其它的用預設

.....

C.定製PURE-FTPD的Banner

vi src/ftpd.c

4329 # ifdef BORING_MODE

4330 addreply_noformat(0, MSG_WELCOME_TO " Pure-FTPd.");

4331 # else

4332 addreply_noformat(0, "--------- " MSG_WELCOME_TO

4333 " Pure-FTPd" VERSION_PRIVSEP VERSION_TLS " ----------");

4334 # endif

將Pure-FPD改為自定義的名稱,比如:IPADDR-FTP

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-942523/,如需轉載,請註明出處,否則將追究法律責任。

相關文章