一、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匿名用户服务搭建
1、FTP匿名用户服务搭建
查看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