pureftp部署和优化

        FTP 是 File Transfer Protocol (文件传输协议)的英文简称,而中文简称为“文传协议”用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Applocation)用户可以通过它把自己的 PC 机与世界各地所有运行 FTP 协议的服务器相连,访问服务器上的大量程序和信息。 FTP 的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着 FTP 服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷贝到本地计算机。或把本地计算机的文件送到远程计算机去。FTP 用得比 NFS 更多。

安装pure-ftpd

        在 centos 或者 redhat linux 上有自带的 ftp 软件叫做 vsftp ,但 pure-ftpd 比 vsftp 配置起来更加灵活。

1.下载软件

        pure-ftpd 官网

1
2
[root@192 ~]# cd /usr/local/src
[root@192 src]# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.42.tar.bz2

2.安装 pure-ftpd

1
2
[root@192 src]# tar jxvf pure-ftpd-1.0.42.tar.bz2
[root@192 src]# cd pure-ftpd-1.0.42
1
2
3
4
5
6
7
8
./configure \
--prefix=/usr/local/pureftpd \
--without-inetd \
--with-altlog \
--with-puredb \
--with-throttling \
--with-peruserlimits \
--with-tls

        编译报错

1
2
3
configure: error: in `/usr/local/src/pure-ftpd-1.0.42':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

        解决办法:

1
yum install -y gcc

        编译报错:

1
configure: error: OpenSSL headers not found.

        解决办法:

1
yum install -y openssl-devel

1
[root@192 pure-ftpd-1.0.42]# make && make install

3.配置 pure-ftpd

1
2
3
4
5
[root@192 pure-ftpd-1.0.42]# cd configuration-file/
[root@192 configuration-file]# mkdir -p /usr/local/pureftpd/etc/
[root@192 configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf
[root@192 configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl
[root@192 configuration-file]# chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

        在启动 pure-ftpd 之前需要先修改配置文件,配置文件为 /usr/local/pureftpd/etc/pure-ftpd.conf,把自带配置删除

1
2
[root@192 configuration-file]# > /usr/local/pureftpd/etc/pure-ftpd.conf
[root@192 configuration-file]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

        加入内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
ChrootEveryone yes
BrokenClientsCompatibility no
MaxClientsNumber 50
Daemonize yes
MaxClientsPerIP 8
VerboseLog no
DisplayDotFiles yes
AnonymousOnly no
NoAnonymous no
SyslogFacility ftp
DontResolve yes
MaxIdleTime 15
PureDB /usr/local/pureftpd/etc/pureftpd.pdb
LimitRecursion 3136 8
AnonymousCanCreateDirs no
MaxLoad 4
AntiWarez yes
Umask 133:022
MinUID 100
AllowUserFXP no
AllowAnonymousFXP no
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
AutoRename no
AnonymousCantUpload no
PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid
MaxDiskUsage 99
CustomerProof yes

4.启动 pure-ftpd

1
2
[root@192 configuration-file]# cd /usr/local/pureftpd/
[root@192 pureftpd]# ./sbin/pure-config.pl ./etc/pure-ftpd.conf

        如果启动成功,会显示一行长长的以 Running 开头的信息,否则那就是错误信息。重启会比较麻烦一些,重启可以使用下面的命令来实现:

1
2
[root@192 pureftpd]# killall pure-ftpd
[root@192 pureftpd]# cd /usr/local/pureftpd/;./sbin/pure-config.pl ./etc/pure-ftpd.conf

5.建立帐号

        pure-ftpd 使用的帐号并非 linux 系统帐号,而是虚拟帐号。因为这样做比较安全。

1
2
3
4
5
6
[root@192 ~]# mkdir -p /data/www/
[root@192 ~]# useradd www
[root@192 ~]# chown -R www:www /data/www/
[root@192 ~]# /usr/local/pureftpd/bin/pure-pw useradd ftp_user1 -uwww -d /data/www/
Password:
Enter it again:

        其中,-u 将虚拟用户 ftp_user1 与系统用户 www 关联在一起,也就是说使用 ftp_user1 帐号登录 ftp 后,会以 www 的身份来读取文件或下载文件。 -d 后边的目录为 ftp_user1 账户的家目录,这样可以使 ftp_user1 只能访问其家目录 /data/www/ 。到这里还有最关键的一部,就是创建用户信息数据库文件:

1
[root@192 ~]# /usr/local/pureftpd/bin/pure-pw mkdb

        pure-pw 还可以列出当前的 ftp 帐号,当然也可以删除某个帐号。再创建一个帐号:

1
2
3
4
[root@192 ~]# /usr/local/pureftpd/bin/pure-pw useradd ftp_user2 -uwww -d /tmp/
Password:
Enter it again:
[root@192 ~]# /usr/local/pureftpd/bin/pure-pw mkdb

        列出当前帐号:

1
2
3
[root@192 ~]# /usr/local/pureftpd/bin/pure-pw list
ftp_user1 /data/www/./
ftp_user2 /tmp/./

        删除帐号的命令为:

1
[root@192 ~]# /usr/local/pureftpd/bin/pure-pw userdel ftp_user2

6.测试 pure-ftpd

        测试需要的工具叫做 lftp ,先安装

1
[root@192 ~]# yum install -y lftp

        测试:

1
2
[root@192 ~]# touch /data/www/123.txt
[root@192 ~]# lftp ftp_user1@127.0.0.1

        注:登录以后可以用 get 下载,put 上传。也可以用 ftp + ip 登录。

        登录后,使用 ls 命令可以列出当前目录都有什么软件。使用 lftp 工具是为了方便在 linux 系统里测试。最好的测试方法是,在 windows 机器里安装个 ftp 客户端软件(推荐 filezilla-client),然后去远程连接测试。

        下面使用 yum 安装 pure-ftpd 的方法。

1
2
3
4
5
6
[root@192 ~]# yum install -y epel-release expect
[root@192 ~]# yum install -y pure-ftpd
[root@192 ~]# curl http://www.apelearn.com/study_v2/.pf.c > /etc/pure-ftpd/pure-ftpd.conf
[root@192 ~]# user='mkpasswd -l 5 -s 0 -d 0 -C 0'
[root@192 ~]# pass='mkpasswd -s 0'
[root@192 ~]# echo $user $pass > /tmp/ftp.pass

        创建 ftp 服务的目录

1
2
[root@192 ~]# mkdir -p /data/ftp
[root@192 ~]# echo -e "$pass\n$pass"|pure-pw useradd $user -u apache -d /data/ftp/

        创建密码文件

1
[root@192 ~]# pure-pw mkdb

        列出用户

1
[root@192 ~]# pure-pw list

        删除帐号

1
[root@192 ~]# pure-pw userdel $user

        启动服务

1
[root@192 ~]# /etc/init.d/pure-ftpd start