pure-ftpd 安装和使用

pure-ftpd发现比 vsftpd 好用多了.

从官方网站下载最新的稳定版本http://www.pureftpd.org/ 其最新版本是1.0.35,下载地址
为:http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.35.tar.bz2
系统环境CentOS 5.5
PureFTPd 1.0.29
编译安装# tar -xvjf pure-ftpd-1.0.29.tar.bz2
# cd pure-ftpd-1.0.29
# ./configure –help        # 查看编译选项
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数据库中存放用户数据

为了方便起见,我在这里使用了几个基本的编译命令来配置编译一个全功能版本的程序
# ./configure –prefix=/usr/local/pure-ftpd/ –with-language=simplified-chinese –with-everything
注意: 如果要指定安 装路径,那么路径最好是/usr/local/pure-ftpd或/usr/local/pureftpd/ 或者干脆就不指定。如果不指定目录的话默认是将程序的文件安装到/usr/local下的相应目录下。我这里指定目录是为了便于管理。至于为什么安装目录 也有如此的讲究,在下面再做说明。
# make && make check && make install

启动pureFTPd服务
# 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-ftpd.passwd 好像是这个。。所以 自己创建个就行了

自从 0.99.2 版本开始, pure-ftpd 就开始支持虚拟用户。虚拟用户方式十分类似 /etc/passwd ,将用户的相关信息,如口令、姓名、 uid 、目录等,存入文件。但是该文件只适用于 FTP 。

这意味着,可以为 FTP 设置虚拟用户,而不需要在系统中添加系统用户。同时,可以为这些用户单独设置配额、ratio 、带宽等限制。很多虚拟用户可以共享同一个系统用户的属性,因此建议为这些虚拟用户单独创建一个系统用户,从而方便管理。

首先,可以在系统中添加相应的用户和组,如 ftpuser 和 ftpgroup 。如:

groupadd ftpgroup

useradd -g ftpgroup -d /dev/null -s /etc ftpuser


可以使用 ”pure-pw” 来创建虚拟用户。虚拟用户的信息以每个用户一行的方式存放在相应的文件中,其格式如下所示:

<account>:<password>:<uid>:<gid>:<gecos>:<home directory>:<upload bandwidth>:<download bandwidth>:<upload ratio>:<download ratio>:<max number of connections>:<files quota>:<size quota>:<authorized local IPs>:<refused local IPs>:<authorized client IPs>:<refused client IPs>:<time restrictions>


其中,除了帐号、口令、 uid 、 gid 和 home 目录之外,其它的可以是空值。

2 .创建一个用户

接下来,我们来创建一个新的用户。 pure-pw 的语法规范如下:

pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]

-D/-d <home directory> [-c <gecos>]

[-t <download bandwidth>] [-T <upload bandwidth>]

[-n <max number of files>] [-N <max Mbytes>]

[-q <upload ratio>] [-Q <download ratio>]

[-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]…]

[-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]…]

[-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]…]

[-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]…]

[-y <max number of concurrent sessions>]

[-z <hhmm>-<hhmm>] [-m]


假设我们要创建 joe 这样一个虚拟用户,则可以使用如下命令:

pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe


其中, -u 将虚拟用户 joe 同系统用户 ftpuser 关联在一起。 -d 参数使 joe 只能访问其 home 目录。而如果想让他访问整个文件系统,可以用 -D 选项。

这时,如果 pure-ftpd 启动时加入 -j(–createhome) 选项,则不需要创建 /home/ftpuser/joe 目录。系统会在该用户第一次登陆时自动创建。

-z 选项运用用户在一天当中指定的时间段连接服务器。如 -z 0900-1800 ,则该用户只能在上午 9 点到晚上 6 点之间连接服务器。

-r 选项或 -R 选项,可以限制用户从指定 IP 和掩码连入服务器

-y ,用户同一时间的并发连接数。 ’’ 或者 0 意味着不限制

-f ,默认虚拟用户的信息会被存放在 /etc/pureftpd.passwd 文件中,通过该选项可以改变该文件的位置。

用户的口令会根据系统对加密方式的支持情况,选择一个最安全的方式进行加密。

3 .更改一个用户

同 pure-pw adduser 唯一不同的是,使用 pure-pw usermod 不是创建一个用户,而是更改已经存在用户的某些属性。

重置某些属性的语法如下:

pure-pw usermod <user> -n ” :禁用文件配额

pure-pw usermod <user> -N ” :禁用文件大小配额

pure-pw usermod <user> -q ” -Q ” :禁用 ratio

pure-pw usermod <user> -t ” :禁用下载带宽限制

pure-pw usermod <user> -T ” :禁用上传带宽限制

pure-pw usermod <user> <-i,-I,-r or -R> ” :禁用 IP 过滤

pure-pw usermod <user> -z ” :禁用时间段约束

pure-pw usermod <user> -y ” :禁用并发数限制


4 .删除一个用户

删除一个用的命令语法是:

pure-pw userdel <login> [-f <passwd file>] [-m]


这时,用户的信息会被从指定的 passwd 文件中删除,但是用户的 home 目录会被保留,需要手工删除。

5 .改变用户口令

更改一个用户口令的语法是:

pure-pw passwd <login> [-f <passwd file>] [-m]


6 .显示用户信息

/etc/pureftpd.passwd 文件中记录的信息不方便用户的阅读,因此 pure-ftpd 提供了显示用户信息的命令。其语法是:

pure-pw show <login> [-f <passwd file>]


7 .提交更改

可以通过上面提到的命令,或者以手工方式对 /etc/pureftpd.passwd 文件进行修改,从而创建、修改和删除一个虚拟用户信息。但是,只有提交这些更改时, pure-ftpd 访问才能生效。

提交更改,意味着系统会根据 /etc/pureftpd.passwd (或者指定的其它文件)来创建一个 pure-ftpd 可读的二进制格式的文件 /etc/pureftpd.pdb 。通常,通过下面的命令:

pure-pw mkdb


可以通过 /etc/pureftpd.passwd 文件自动创建 /etc/pureftpd.pbd 文件。但是,如果需要指定特定的文件,可以通过下面的方式来实现:

pure-pw mkdb /etc/accounts/myaccounts.pdb -f /etc/accounts/myaccounts.txt


这时,没有必要去重启 pure-ftpd 服务,对虚拟用户进行的更改可以更新。同时,也可以通过 -m 选项,在对/etc/pureftpd.passwd 文件进行修改的时候自动进行提交。

8 .打开对虚拟用户的支持

使得 pure-ftpd 支持虚拟用户,需要在编译的时候加入选项 –with-puredb 。这时,可以通过在启动服务是的 ’-l’ 参数来设置。如:

/usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &


可以在后台,以自动创建虚拟用户 home 目录,用 puredb 的方式来支持虚拟用户。

9 .转换系统用户

可以通过如下命令,将系统用户转换为虚拟用户:

pure-pwconvert


如果以 root 用户运行该命令,系统用户的口令一并被转入虚拟用户配置文件。如:

pure-pwconvert >> /etc/pureftpd.passwd


10 .环境变量

默认的情况下,如果指定了环境变量 PURE_PASSWDFILE ,则虚拟用户的 passwd 文件位置由该变量的值指定。否则,默认是 /etc/pureftpd.passwd 。用样, PURE_DBFILE 环境变量用来指定 pdb 文件的位置。默认是/etc/pureftpd.pdb 。

pure-pw mkdb /etc/pure-ftpd/pureftpd.pdb

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据