pureftp 部署和优化

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

安装pure-ftpd

在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftp,这里使用pure-ftpd搭建ftp服务器,因为这个软件比vsftp配置起来更加灵活和安全。

1. 下载软件

pure-ftpd 官网是 http://www.pureftpd.org/project/pure-ftpd

2. 安装软件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /usr/local/src/
tar jxf pure-ftpd-1.0.42.tar.bz2 #解压缩
cd pure-ftpd-1.0.42

./configure \
--prefix=/usr/local/pureftpd \
--without-inetd \
--with-altlog \
--with-puredb \
--with-throttling \
--with-peruserlimits \
--with-tls
#编译
make
make install

配置pure-ftpd

1. 修改配置文件
1
2
3
4
5
cd configuration-file
mkdir -p /usr/local/pureftpd/etc/
cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf
cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl
chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

把配置文件修改为:

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
2. 启动pure-ftpd
1
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

如果是启动成功,会出现:

1
Running: /usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb -L3136:8 -m4 -s -U133:022 -u100 -g/usr/local/pureftpd/var/run/pure-ftpd.pid -k99 -Z

如果失败需要重启的话,可以使用下面的命令来实现。

1
2
killall purerf-ftpd
/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
3. 建立账号
1
2
3
4
5
6
mkdir /tmp/ftp
useradd user3
chown -R user3 /tmp/ftp
/usr/local/pureftpd/bin/pure-pw useradd ftp_user1 -uuser3 -d /tmp/ftp
Password:
Enter it again:

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

1
/usr/local/pureftpd/bin/pure-pw mkdb

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

1
2
/usr/local/pureftpd/bin/pure-pw  useradd ftp_user2 -uuser3 -d /tmp/ftp
/usr/local/pureftpd/bin/pure-pw mkdb

列出当前账号:

1
/usr/local/pureftpd/bin/pure-pw list

删除账号的命令为:

1
/usr/local/pureftpd/bin/pure-pw  userdel ftp_user2
4. 测试pure-ftpd

测试需要使用的工具叫做lftp, 先安装一下它:

1
yum install -y lftp

测试:

1
2
3
4
5
6
7
8
9

lftp ftpuser1@192.168.189.131
口令:
lftp ftpuser1@192.168.189.131:~> ls
drwxr-xr-x 2 504 0 4096 Mar 20 19:57 .
drwxr-xr-x 2 504 0 4096 Mar 20 19:57 ..
-rw-r--r-- 1 0 0 0 Mar 20 19:57 1.txt
-rw-r--r-- 1 0 0 0 Mar 20 19:57 2.txt
-rw-r--r-- 1 0 0 0 Mar 20 19:57 3

注意:在登录lftp后可以使用的命令与在shell中是不一样的,通过?可以查询:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
lftp ftpuser1@192.168.189.131:~> ?        
!<shell-command> (commands) alias [<name> [<value>]] bookmark [SUBCMD]
cache [SUBCMD] cat [-b] <files> cd <rdir> chmod [OPTS] mode file...
close [-a] [re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>] du [options] <dirs>
exit [<code>|bg] get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args> help [<cmd>]
history -w file|-r file|-c|-l [cnt] jobs [-v] kill all|<job_no> lcd <ldir>
lftp [OPTS] <site> ls [<args>] mget [OPTS] <files> mirror [OPTS] [remote [local]]
mkdir [-p] <dirs> module name [args] more <files> mput [OPTS] <files>
mrm <files> mv <file1> <file2> [re]nlist [<args>] open [OPTS] <site>
pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>] pwd [-p] queue [OPTS] [<cmd>]
quote <cmd> repeat [OPTS] [delay] [command] rm [-r] [-f] <files> rmdir [-f] <dirs>
scache [<session_no>] set [OPT] [<var> [<val>]] site <site_cmd> source <file>
torrent [-O <dir>] <file> user <user|URL> [<pass>] version wait [<jobno>]
zcat <files> zmore <files>

下载文件使用get命令,会自动下载到当前目录;上传当前目录的文件可以用put命令。

1
2
3
4
5
lftp ftpuser1@192.168.189.131:/> get a.txt 
101 bytes transferred

lftp ftpuser1@192.168.189.131:~> put graped.1
35 bytes transferred

在linux下还有一个测试工具是ftp,也需要通过yum安装。在windows可以使用filezilla软件测试。