FTP==file transfer protocol  文件传输协议

通过ftp协议进行文件的上传和下载,它和http不太一样,http只提供让大家去访问的。FTP不仅在WINDOWS上还是LINUX上都可以搭建这个服务。

两种不同的软件: pure-ftpd     vsftpd(系统自带)

pure-ftpd

它是一个非常非常轻便的搭建服务器的这么一个server,而且可以实现通过映射系统用户来实现登录,我们当然了提供用户的是一个虚拟用户,那么我们通过这人虚拟用户呢是可以登录ftp服务的,但是你用这个虚拟用户是不能登录

我们的服务器的。

官网:www.pureftpd.org

服务端

## 下载源码包

[root@wy ~]# cd /usr/local/src

[root@wy src]# wget http://down.anxia.com/pure-ftpd-1.0.42.tar.gz

## 解压

[root@wy src]# tar zxvf pure-ftpd-1.0.42.tar.gz

## 编译安装

[root@wy src]# cd pure-ftpd-1.0.42

[root@wy pure-ftpd-1.0.42]# ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-peruserlimits  --with-tls

[root@wy pure-ftpd-1.0.42]# make

[root@wy pure-ftpd-1.0.42]# make install

## 查看pureftpd目录

[root@wy pure-ftpd-1.0.42]# ls /usr/local/pureftpd/

bin  sbin  share

## 创建配置文件的所在路径

[root@wy pure-ftpd-1.0.42]# mkdir -p /usr/local/pureftpd/etc/

## 拷贝模板配置文件过来

[root@wy pure-ftpd-1.0.42]# cd configuration-file/

[root@wy configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf

## 拷贝启动pure-ftpd文件,并修改权限

[root@wy configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/

[root@wy configuration-file]# chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

## 编辑配置文件(里面内容太多,也大部分注释掉了,先清空,重新配置)

[root@wy configuration-file]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

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

解释说明:

PureDB  /usr/local/pureftpd/etc/pureftpd.pdb  用户名和密码所存放那个文件的路径,这是一个密码库文件

MinUID  100  映射系统用户的时候uid不能小于100的

## 创建测试目录

[root@wy configuration-file]# mkdir /tmp/ftp

## 映射用户到php-fpm

[root@wy configuration-file]# chown -R php-fpm /tmp/ftp

## 添加用户

[root@wy configuration-file]# /usr/local/pureftpd/bin/pure-pw useradd ftpuser1 -uphp-fpm -d /tmp/ftp

解释说明:

/usr/local/pureftpd/bin/pure-pw   用来添加用户的命令

useradd  ftpuser1  虚拟用户,也就是登录ftp服务的用户

-uphp-fpm  映射的系统用户

-d /tmp/ftp  共享的ftp目录

## 创建生成密码库文件并查看

[root@wy configuration-file]# /usr/local/pureftpd/bin/pure-pw mkdb

[root@wy configuration-file]# /usr/local/pureftpd/bin/pure-pw list

ftpuser1            /tmp/ftp/./

## 启动pure-ftpd

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

Running: /usr/local/pureftpd/sbin/pure-ftpd -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

解释说明:

这条命令前面是启动文件,后面是配置文件

看到Running开头的信息才算启动成功


## 查看进程

[root@wy configuration-file]# ps aux|grep pure-ftpd

root      8747  0.0  0.0 138904   748 ?        Ss   18:00   0:00 pure-ftpd (SERVER)                                                                                                                                                                              

root      8750  0.0  0.0 103252   888 pts/0    S+   18:10   0:00 grep pure-ftpd

## 查看端口(为了方便看到,先把nfs服务先停掉)

[root@wy configuration-file]# /etc/init.d/rpcbind stop

[root@wy configuration-file]# /etc/init.d/nfs stop

[root@wy configuration-file]# netstat -lnp|grep pure

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      8747/pure-ftpd (SER

tcp        0      0 :::21                      :::*                        LISTEN      8747/pure-ftpd (SER

客户端

## 安装lftp命令(测试需要使用的工具叫做lftp)

[root@y2 ~]# yum install -y lftp

## 登录

[root@y2 ~]# lftp ftpuser1@192.168.219.129

口令:

lftp ftpuser1@192.168.219.129:~> ls      

drwxr-xr-x    2 501        0                4096 Nov 13 17:48 .

drwxr-xr-x    2 501        0                4096 Nov 13 17:48 ..

lftp ftpuser1@192.168.219.129:/> mkdir 123

mkdir 成功, 建立 `123'

lftp ftpuser1@192.168.219.129:/> ls

drwxr-xr-x    3 501        0                4096 Nov 13 18:22 .

drwxr-xr-x    3 501        0                4096 Nov 13 18:22 ..

drwxr-xr-x    2 501        php-fpm          4096 Nov 13 18:22 123

解释说明:

若客户端没有这个用户,它会显示数字(uid)

lftp ftpuser1@192.168.219.129:/>

   !<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>

解释说明:

lftp它里面有自己的命令

lftp ftpuser1@192.168.219.129:/> put 文件名   上传

lftp ftpuser1@192.168.219.129:/> get 文件名   下载

备注:

当然也可以使用ftp命令登录,跟lftp有点区别,ftp这样登录(yum install -y ftp):

[root@y2 ~]# ftp 192.168.219.129    // 后面只需跟ip

Connected to 192.168.219.129 (192.168.219.129).

220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------

220-You are user number 1 of 50 allowed.

220-Local time is now 18:43. Server port: 21.

220-IPv6 connections are also welcome on this server.

220 You will be disconnected after 15 minutes of inactivity.

Name (192.168.219.129:root): ftpuser1

331 User ftpuser1 OK. Password required

Password:

230 OK. Current directory is /

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ?

解释说明:

ftp 同样也有自己的命令,跟lftp的命令也是有些区别的

服务端

## 客户端创建了一个目录,可以查看共享目录

[root@wy configuration-file]# ls /tmp/ftp

123

## 查看ftp日志

[root@wy configuration-file]# tail /var/log/messages

## 在共享目录中创建一个文件

[root@wy configuration-file]# cd /tmp/ftp/

[root@wy ftp]# vim 12.txt

解释说明:

创建后可以去客户端查看,可能有延迟,一下看不到,可以先退出,再登录进行查看。