FTP

一、FTP连接及传输模式

1. 控制连接:TCP21,用于发送FTP命令信息


2. 数据连接:TCP20,用于上传、下载数据


3. 数据连接的建立类型:

1)主动模式:服务器主动发起数据连接服务器找你
首先由客户端向服务端的21端口建立FTP控制连接。当需要传输数据时,客户端以PORT 命令告知服务区“我打开了某端口,你过来连接我”,预算服务器从20端口向客户端的该端口发送请求并建立数据连接。
2)被动模式:服务器被动等待客户端数据连接
如果客户端所在网络的防火墙禁止主动模式连接,通常回 使用被动模式。
首先由客户端向服务器的21端口建立FTP控制连接。当需要传输数据时,服务器以PASV命令告知客户端“我打开了某端口,你过来连接我”,于是客户端向服务器的该端口(非20)发送请求并建立数据连接。

 

4. 传输模式

传输模式:可以是文本模式,也可以是二进制模式,二进制模式更适合传输图片等非文本字符的文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5、FTP服务器的作用

用于用户到服务器里上传和下载,具体看下图

 

二、FTP用户类型

匿名用户:不需要输入用户(多人共享一个) 
本地用户:本地的Linux登陆用户(每个共享用户的家目录) 
虚拟用户:不同于本地用户,可以创建一个匿名用户的FTP,跟Linux没有关系

 

三、FTP匿名用户服务搭建

1FTP匿名用户服务搭建

查看rpm -qa | grep vsftpd

首先查看服务端有没有vsftpd命令,没有则需要yum安装一下

 

 

 

 

修改属主

yum装完vsftpd自然就有/var/ftp/pub的共享目录 
属主是root别的用户没有办法读写,所以需要把pub属主换成ftp,ftp程序用户系统默认就有

 

 

备份配置文件

安装完vsftpd自然就有/etc/vsftpd/vsftpd.conf      ftp配置文件,为了安全先备份一份

cp vsftpd.conf{,.bak}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

vim打开ftp配置文件/etc/vsftpd/vsftpd.conf

 

 

启动ftp服务

 

 

因为服务端共享目录里没有文件,所以先创建一个

 

 

 

 

 

客户端只需要安装ftp命令就可以

 

 

2、登陆FTP

ftp客户端登陆服务端,

匿名用户名就是ftp,没有密码为空,所以直接回车

 

 

ls看一下当前,

看到了pub,cd进去看到了sl 自然就证明了我已经连接到了服务端

 

ftp命令

linux不一样,所以需要help查看一下

 

 

ftp里get代表下载,put代表上传

你当前在哪个目录登陆ftp就下载到哪个目录

 

 

 

ftp里put代表上传命令

也只能上传客户端当前目录里的文件,不能是绝对路径上传

 

 

 

用户下载是服务器赋予的读权限,因为对服务器没有进行任何改变

 

四、FTP本地用户服务搭建

1、准备工作

每个用户的共享文件在每个用户的家目录里

首先先将配置完成后的匿名用户备份,在把初始的配置文件复制回来

做个备份

 

 

 

 

 

 

 

 

 

 

 

 

 

 

匿名关闭

因为是ftp本地用户搭建所以把匿名关闭,在把第96行的本地用户家目录取消注释并开启

其他还是开的

 

 

 

本地用户开启(96)行

开启本地用户的家目录锁定

 

 

修改完配置文件要重新启动

/etc/init.d/vsftpd reload

 

 

 

 

2、本地搭建

创建本地用户

因为是ftp本地用户服务所以需要先创建一个普通用户和密码用客户端ftp登陆服务端输入yunjisuan账号和密码

 

 

登陆

 

刚创建用户家目录没有任何东西,所有在服务端yunjisuan用户创建一个文件

 

在客户端ftp服务里ls看到了创建的新文件

 

 

特别说明

说明每个用户的共享文件都在每个用户的家目录里

匿名的FTP用于多人共享一个目录或文件,本地是每个用户独立空间

 

黑名单设置

/etc/vsftpd/ftpusers   user_list   (两个都是黑名单功能)

FTP给用户加黑名单,优先级高于/etc/vsftpd/user_list   

即使用户不可访问FTP服务器,可以通过vsftpd.conf将此修改为白名单且仅此名单中的用户可以访问。

 

 

五、FTP虚拟用户服务搭建

1、准备工作

FTP虚拟账号是FTP自己承认的虚拟账号

每个用户通过虚拟账号进来都是看到一个同一空间,都是这个虚拟账号共享的

首先需要把ftp本地用户服务备份,在把源配置文件复制回来

 

 

 

 

 

 

 

 

 

db_load创建虚拟账号文件

/etc/创建虚拟账号vsftpd文件

 

 

 

 

 

db_load命令转换成数据文件

创建完密码文件需要db_load命令转换成数据文件,-T允许非程序使用该数据库 -t指定算法 hash -f代表加密,因为是密码,为了增加安全性需要给chmod 600 vusers.db权限

 

 

创建程序用户(最后映射成的虚拟账号)

 

 

创建pam认证文件

 

 

2、修改配置文件

修改配置文件其余的文件配置跟本地的一样。

虚拟账号也是通过本地账号来做映射的,就是我们刚刚创建的virtual

所以匿名用户还要关闭,本地账号要开启,因为都是通过虚拟账号映射到本地账号上的

 

首先把匿名用户关闭

 

 

 

把最下面配置文件进行修改到下面的图

把最下面配置文件

 

改成这样

 

 

 

 

 

 

刚刚修改的注释:开启映射账号

 

 

重启

/etc/init.d/vsftpd reload

 

3、共享目录位置就是刚刚创建用户指定的家目录

因为是指定创建的家目录,所以需要去/var/ftproot创建点文件

 

登陆

输入的账号密码就是之前创建的一堆账号密码文件里的

 

 

4、想要每个虚拟用户都有不同的目录

得加配置文件和自己创建目录

实现每个虚拟用户不同根目录,不同权限的管控,首先在/etc/vsftpd创建mkdir /vusers.dir目录,创建完进入目录touch 虚拟账号里的名字

 

 

 

 

 

 

修改新创建虚拟账号文件

vim手动打开/etc/vsftpd/vusers.dir/虚拟账号名

 

 

 

给虚拟账号创建根目录

配置完手动mkdir -p /var/虚拟账号名,chown virtual /var/虚拟账号名:把账号属主换成virtual有读写权限

 

 

最后需要修改/etc/vsftpd/vsftpd.conf总配置文件

告诉总配置文件,每个虚拟账号的单独的配置文件的位置

 

 

重启服务/etc/init.d/vsftpd reload后进入测试环境,手动在服务端家目录创建个文件

这样就可以了,每个虚拟用户的家目录就创建成功了

 

修改虚拟账户的配置文件

mkdir /var/lisi

vim lisi

 

anon_upload_enable=YES

anon_max_rate=0    #为“0”,表示不限制最大传输速度

local_root=/var/lisi

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/kakajiang/p/10084606.html