PureFTPd是免费、安全、符合国际标准的FTP 服务器程序。它并没有那些无用而又花哨的功能,而是将重点放到了提高效率和易用性上,独特的实用功能为个人用户和托管服务提供商提供了一个新的选择.
从官方网站下载最新的稳定版本http://www.pureftpd.org/ 。下载地址为:http://download.pureftpd.org/pub/pure-ftpd/releases/
可以通过wget直接下载:
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.30.tar.bz2
CentOS 5.5
PureFTPd 1.0.30
tar -xvjf pure-ftpd-1.0.30.tar.bz2
cd pure-ftpd-1.0.30
./configure --prefix=/usr/local/pure-ftpd/ --with-language=simplified-chinese --with-everything
make && make check && make install
mkdir /usr/local/pure-ftpd/etc
cp configuration-file/pure-ftpd.conf /usr/local/pure-ftpd/etc/
cp configuration-file/pure-config.pl /usr/local/pure-ftpd/sbin/
chmod 755 /usr/local/pure-ftpd/sbin/pure-config.pl
PureFTPd有很多的编译配置选项,下面就列出部分主要的配置
--prefix=PREFIX
--with-sysquotas 使用系统磁盘配额 (非虚拟)
--with-altlog 支持选择日志格式(类似Apache)
--with-puredb 支持虚拟用户 (FTP登陆用户而非系统用户)
--with-extauth 支持扩展验证模块
--with-pam 启用PAM验证支持 (默认=禁用)
--with-cookie 启用Cookie支持 (-F 选项)
--with-throttling 支持带宽控制 (默认=禁用)
--with-ratios 支持 上传/下载 速度控制
--with-quotas 支持 .ftpquota 文件(指定磁盘配额使用)
--with-ftpwho 支持pure-ftpwho(查看在线用户的程序)
--with-largefile 支持大于2G的文件
--with-welcomemsg 支持 welcome.msg 向后兼容(已经过时)
--with-uploadscript 上传后允许执行外部脚本 (测试阶段)
--with-virtualhosts 在不同的IP地址提供虚拟服务器功能
--with-virtualchroot 允许在chroot的环境下通过符合连接跳转到外部
--with-diraliases 启用目录别名
--with-nonroot 普通模式或者说是限制模式. 如果你在该服务器上没有root权限
那只有启用该项
--with-peruserlimits 支持每个用户的并发限制
--with-language= 语言支持< english | traditional-chinese | simplified-chinese>
--with-ldap 在LDAP目录中提供用户数据库
--with-mysql 在MySQL数据库中存放用户数据
--with-pgsql 在PostgreSQL数据库中存放用户数据
--with-privsep 启用权限分离
--with-tls 启用 SSL/TLS 支持 (测试阶段, 需要安装 OpenSSL)
--with-certfile= 证书文件 (默认目录: /etc/ssl/private/pure-ftpd.pem)
--with-rfc2640 启用兼容 RFC 2640 支持(UTF-8 编码的文件名,测试阶段,需要安装iconv)
--with-everything 启用大多数选项,编译完功能版本的服务器端。
为了方便起见,我在这里使用了几个基本的编译命令来配置编译一个全功能版本的程序。
这里所说的系统集成就是制定系统变量,使系统可以找到我们刚刚安装的程序,最简单的方法就是将一些可执行的程序,man文件在系统指定的path中建立符号链接就可以了。当然我们也可以修改系统变量,如PATH变量,man page的配置文件等等。但是我还是习惯在相应的目录建立符合连接。
cd /usr/local/bin/
ln -s /usr/local/pure-ftpd/bin/* .
ln -s /usr/local/pure-ftpd/sbin/* /usr/local/sbin/
ln -s /usr/local/pure-ftpd/man/man8/* /usr/local/share/man/man8/
pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf
屏幕上显示如下:
Running: /usr/local/pure-ftpd/sbin/pure-ftpd -A -b -B -C20 -d -e -fnone -H -I15 -L2000:8 -M -m4 - p45000:50000 -q1:10 -s -t200 -U133:022 -u100 -r -Oclf:/var/log/pureftpd.log -k99 -Z
红框为端口。
pure-ftp默认采用Linux的root用户。虚拟用户则能够更好的控制访问权限。虚拟用户是和Linux系统用户关联的独立的账户系统。所以在创建虚拟用户之前最好先创建一个系统的账户和组。
创建一个ftpgroup组和ftpuser用户
# groupadd ftpgroup
# useradd -g ftpgroup -d /dev/null -s /etc ftpuser
接下来所有与虚拟用户相关的操作都可以用‘pure-pw’命令来完成。当然你也可以手动的来编辑相应的文件。
pure-pw useradd test -u ftpuser -d /home/ftpusers/test
以上以test用户为例子。
回车后提示输入两次密码
添加之后不能马上生效,请看下面的解释。
虚拟用户创建之后,你也可以通过pure-pw命令来修改其相关的信息,如限制下载
带宽、磁盘配额、用户全名、下载上传率等等
例如:我要修改用户joe的最大文件数为1000个,大小为10MB,命令如下:
# pure-pw usermod joe -n 1000 -N 10
pure-pw userdel test
以test用户为例。
pure-pw passwd test
然后提示输入两遍密码即可。
以test为例。
前面讲到如果使用创建ftp用户尝试登录服务器是不行的,要想让ftp server能够识别的我们所做的更改,必须要通过pure-pw mkdb 命令生成PureDB格式的文件,实际上PureDB数据文件就是从pureftpd.passwd文件转换过来的,为了ftp server可以更快的检索到指定的用户。
# pure-pw mkdb
# killall pure-ftpd
# /usr/local/pure-ftpd/sbin/pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf
以上操作重新启动了ftp,现在你可以重新连接一下试试了!
# /usr/local/pure-ftpd/sbin/pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf
# echo "/usr/local/bin/pure-config.pl /usr/local/pure-ftpd/etc/pure-ftpd.conf " >> /etc/rc.local