目录
一、 FTP服务的定义
二、 FTP服务的工作原理
控制连接:
数据连接:
三、 FTP服务搭建过程
匿名用户登录:
本地用户登录:
虚拟用户登录
一、 FTP服务的定义
FTP(File Transfer Protocol)即文件传输协议,是用于在网络上进行文件传输的标准协议。它运行在 TCP/IP 协议栈之上,采用客户端 - 服务器(C/S)架构。通过 FTP 服务,用户可以将文件从本地计算机(客户端)上传到远程服务器,也可以从远程服务器下载文件到本地计算机。
二、 FTP服务的工作原理
控制连接:
- 当客户端想要访问 FTP 服务器时,首先会建立一个控制连接。这个控制连接使用 TCP 协议,默认端口是 21。通过这个连接,客户端可以向服务器发送命令,如登录、列出文件目录、切换目录等操作的指令。
- 例如,当用户在 FTP 客户端软件中输入服务器地址并尝试连接时,就会建立这个控制连接。
数据连接:
- 当需要传输文件数据(上传或下载)时,会建立一个单独的数据连接。数据连接的端口是动态分配的,它可以是主动模式(服务器主动连接客户端)或者被动模式(客户端主动连接服务器)。
- 比如,在主动模式下,服务器会使用端口 20 主动向客户端发起数据连接;而在被动模式下,服务器会告知客户端一个临时的端口号,然后客户端去连接这个端口来进行数据传输。
三、 FTP服务搭建过程
1. 我这里使用:服务端192.168.180.110,客户端192.168.180.120
2. 均关闭防火墙
systemctl stop firewalld
setenforce 0
3. 提前搭建好本地yum源,具体搭建过程可以查看我之前发的博客,里面有详细步骤本地yum源https://blog.csdn.net/m0_68472908/article/details/143856929?spm=1001.2014.3001.5501
当一切的准备工作做好后,就可以开始搭建FTP服务了
这里我会一次演示匿名用户登录、本地用户登录以及虚拟用户登录的搭建过程
匿名用户登录:
FTP-server
1. 安装vsftpd
yum install -y vsftpd
2. 进入主配置文件修改配置
vim /etc/vsftpd/vsftpd.conf
将本地用户登录修改为NO,表示禁止本地用户登录
允许匿名用户上传文件,取消注释
允许匿名用户创建目录,取消注释
3. 开启服务
systemctl start vsftpd
4. 修改FTP目录权限
chmod 777 /var/ftp/pub/
5. 创建测试文件
cd /var/ftp/pub/
touch text.txt
FTP-client
1. 安装FTP
yum install -y ftp
2. 创建测试文件
touch client-text.txt
3. 连接服务端
ftp 192.168.180.110
匿名用户访问的用户是ftp,密码为空直接回车
上传测试文件
cd pub
put client-text.txt
下载测试文件
get text.txt
查看,都彼此有了测试文件
本地用户登录:
FTP-server
1. 进入主配置文件
vim /etc/vsftpd/vsftpd.conf
将anonymous_enable修改为NO,禁止匿名访问
将local_enable修改为YES,开启本地用户访问
添加内容
chroot_local_user=YES,限制本地用户只能访问自己的目录
allow_writeable_chroot=YES,用户主目录具有写入权限
chroot_local_user=YES
allow_writeable_chroot=YES
2. 创建用户
useradd text
passwd text
3. 重启服务
systemctl restart vsftpd
4. 创建测试文件
要进入text用户的家目录创建文件
cd /home/text/
touch text02.txt
FTP-client
1. 创建测试文件
touch client-text02.txt
2. 登录服务器
ftp 192.168.180.110
使用text用户登录
上传文件
put client-text02.txt
下载文件
get text02.txt
查看
虚拟用户登录
FTP-server
1. 创建虚拟用户列表
cd /etc/vsftpd/
vim vusers.list
2. 将用户列表文件转换为数据库文件,并用哈希算法加密,并修改两个文件的权限
db_load -T -t hash -f vusers.list vusers.dbchmod 600 vusers.*
3. 创建FTP根目录及虚拟用户映射的系统用户,并给目录设置权限
useradd -d /var/ftproot -s /sbin/nologin virtualchmod 755 /var/ftproot
4. 设置虚拟用户的PAM认证文件
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
db=/etc/vsftpd/vusers:这个最后的vusers这个名字,是我们刚刚创建的用户列表的名字,要一致,不能出错
5. 配置主配置文件
vim /etc/vsftpd/vsftpd.conf
设置PAM文件路径
添加内容
guest_enable=YES
anon_umask=022
guest_username=virtualuser_config_dir=/etc/vsftpd/vusers_dir
allow_writeable_chroot=YES
guest_enable=YES //开启虚拟用户
anon_umask=022 //掩码
guest_username=virtual //指定虚拟用户为virtual
user_config_dir=/etc/vsftpd/vusers_dir //创建不同虚拟用户的配置文件存放目录
allow_writeable_chroot=YES //具有写入权限
6. 创建目录
mkdir /etc/vsftpd/vusers_dir
cd vusers_dir/
touch zs ls
vim zs
anon_upload_enable=YES //允许上传文件
anon_mkdir_write_enable=YES //允许创建目录
7. 重启服务
systemctl restart vsftpd
8. 创建测试文件
cd /var/ftproot/
touch text03.txt
FTP-client
1. 创建测试文件
touch client-text03.txt
2. 登录
ftp 192.168.180.110
3. 上传文件
put client-text03.txt
4. 下载文件
get text03.txt
到这里实验三个步骤就完成了!!!⭐
扩展内容
vsftpd有两个文件,分别是:
1. ftpusers:控制连接拒绝用户登录
2. user_list:数据连接段
user list_enable = no:禁用user_list文件
user list_enable = yes:用user_list文件
userlist_deny = yes:user_list文件中定义的用户拒绝登录
userlist_deny = no:仅允许user_list中定义的用户登录