1 下载
http://sourceforge.net/projects/pureftpd/
目前最新版本是pure-ftpd-1.0.21.tar.gz
2 安装
解包到任意目录,如/home/ender
tar xzvf pure-ftpd-1.0.21.tar.gz
cd pure-ftpd-1.0.21/
./configure –prefix=/home/ftp/pureftpd –with-language=simplified-chinese –with-everything
注:
–with-eyerything是安装所有功能
–with-language=simplified-chinese是采用中文作为提示语言
–prefix是安装的目标目录
另外如果需要与mysql连接等还需要在此指定。本文不涉及。
编译安装:
make
make install
3 建立用户
pureftp默认的是采用linux的用户,比如用root登录等等。此处同时采用其自带的virtual users系统。该系统独立于linux。
建立一个ftp用户的文件夹,这也就是匿名用户。
mkdir /home/ftp/ftpdir
建立一个ftp用户与组:
groupadd ftpgroup
useradd -g ftpgroup -d /home/ftp/ftpdir -s /etc ftp
进入安装执行目录
cd /home/ftp/pureftpd/bin
建立第一个虚拟用户:
./pure-pw useradd ender -u ftp -d /home/ftp/ftpdir/ -f /home/ftp/pureftp/pureftp.passwd
说明:ender是用户名,-u ftp是其实际的linux用户,-d指定起始目录,并锁定于该目录。如果不锁定,则用-D
如果需要不同的权限,可以建立新的linux用户与组,-f 新建的用户passwd文件所在的地方。
建立用户数据库:
./pure-pw mkdb /home/ftp/pureftp/pureftp.pdb -f /home/ftp/pureftp/pureftp.passwd
说明:今后每添加或修改用户数据库都应该执行一次mkdb,执行后不需要重起ftp
4 建立运行语句
cd /home/ftp/pureftp/sbin
./pure-ftpd -4 -A -c 10 -C 1 -G -H -i -I 1 -k 95 -K -r -l puredb:/home/ftp/pureftp/pureftp.pdb \
-L 100:2 -O stats:/home/ftp/log/pureftpd.log -p 40000:50000 -R -T 500 -w -X -y 3:10
说明:
-4 只使用ipv4
-A 除了root用户外,所有用户锁定于根目录
-c 总的最多连接数
-C 每个ip最多连接数
-G 不允许重命名
-H 取消DNS反查,加快连接速度
-i 不允许匿名用户上传
-I 空闲时间,超时后关闭连接,单位为分钟
-k 限制硬盘使用量为总大小的95%
-K 允许非匿名用户上传文件和断点续传(重写同名文件),但是不允许删除和重命名文件,如果文件夹为空,用户可以删除。
-r 不允许重写同名文件,如果上传了一个同名文件,如xyz,就会被重命名为xyz.1等等。
-l 很重要的一个参数,说明用户认证方式,可以有如下认证方式:
-l unix 用 /etc/passwd认证
-l pam 用pam方式认证
-l puredb:/path/to/puredb_database 用PureDB方式认证,即虚拟用户方式,可参看README
-l ldap:/path/to/ldap_config_file 用LDAP 文件夹认证方式,可参看README
-l mysql:/path/to/mysql_config_file 用MySQL数据库方式认证,可参看README
-l pgsql:/path/to/postgres_config_file 用Postgres数据库方式认证,可参看README
-l extauth:/path/to/authd/socket 用external authentication handlers (with pure-authd),可参看README
可以同时用多个认证方式,例如你可以这么运行
/usr/local/sbin/pure-ftpd -lldap:/etc/pureftpd-ldap.conf \
-lpuredb:/etc/pureftpd.pdb -lunix
认证方式参看README
-L 避免愚蠢的denial-of-service攻击,或者是cup hogs,第一个参数是浏览时显示的最大文件数,第二个参数是ls -R时最深的文件夹层数。
-O 记录传输过的所有文件到指定的文件,第一个参数是format,可以为CLF(Apache-like), Stats, W3C 和 xferlog。其中Stats的格式是<date> <session id> <user> <ip> <U or D> <size> <duration> <file>。其中date是timestamp格式的,可以用/home/ftp/pureftp/bin/pure-statsdecode转化为人能看懂的格式。
-p 设置port模式的端口。
-R 禁止用户使用chmod
-T 设置所有用户的上传下载速度,可以为一个参数,上传下载最高都为此参数,单位是KB/S,两个参数时第一个是最大上传速度,第二个是最大下载速度,用冒号分隔开来。
-w 对非匿名用户支持FXP模式
-X 所有用户不能读/写/重命名以.(dot)开头的文件。
-y 第一个参数是一个非匿名用户最多能登录数,第二个参数是匿名用户最多能登录数。
我就用到这么多了,其他参数请参看README。
5 自动启动
pureftp支持多种启动方式,这里用最容易的一种:
vi /etc/rc.d/rc.local
添加
cd /home/ftp/pureftp/sbin
./pure-ftpd -4 -A -c 10 -C 1 -G -H -i -I 1 -k 95 -K -r -l puredb:/home/ftp/pureftp/pureftp.pdb \
-L 100:2 -O stats:/home/ftp/log/pureftpd.log -p 40000:50000 -R -T 500 -w -X -y 3:10
6 文件夹操作
你可以给你的ftp目录/home/ftp/ftpdir/里添加文件了,通过chmod和chown改变文件和文件夹的属性来起到某些功能限制的作用。
7 其他
pureftpd 另外也提供了一个图形界面的配置管理器kcmpureftpd。可在sourcefouge同时下载。其实用命令行的方式可以锻炼人对其理解能力,但是会使许多人望而却步,这也是linux不好之处了,但是我们是本着学电脑的方式来做这些事的,就一定要学的扎实。
8 Funny
pureftpd有一些很好玩的东西,在每次登录时都会有一个登录时的banner,之要在ftp文件夹(在本例中为/home/ftp/ftpdir)里写一个.banner文件就行了(不过我在这设置的时候遇到了一些编码的问题,等我研究清楚了再说吧),你也可以写一个不错的ASCII-art文件,呵呵,这样子就会很好看。另外,也可以在每一个文件夹里写一个.message 文件,在每次进入这个文件夹时就会显示出来。
pureftpd也可以在登录时随机的显示一些信息,即cookies,这些cookies得从一个标准的“fortune”格式的文件里解出来,如果你安装了fortune包的话,就会在/usr/share/games/fortune下面有一个二进制的文件fortune(.dat)和一个text文件(没有.dat后缀),在运行pureftpd的时候之要用-F参数把这个text文件加上就行了,如:
/usr/local/sbin/pure-ftpd -F /usr/share/fortune/zippy
如果你想有你自己的fortune文件,那么创建一个text文件,格式如下:
Hello… this is the first fortune…
%
Welcome to the real world.
%
Follow the white rabbit.
%
Have fun…
Well… lotsa fun!
%
Yop is good for you.
就是这样,fortune用%分割开来,创建的这个文件必须是只读的,要不pureftpd会忽略掉它。
好了,这就可以写一些比较有趣的话了。我们写在/home/ftp/pureftp里,文件名是pure-fortune,内容如下:
我觉得人生其实挺没意思的
%
你觉得清华好吗?
%
你喜欢吃鸡翅吗?
%
我想做一个超人,飞到美国抢1000台MacBook Pro来
%
呵呵,大家最近都好吗?在忙些什么?

添加到雅虎收藏