【FTP】——文件传输协议

77 篇文章 0 订阅
46 篇文章 3 订阅

1.FTP简介

1.1 FTP概述

FTP服务——用来传输文件的协议。
在这里插入图片描述

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信.

20端口用于建立数据连接,并传输文件数据.

21端口用于建立控制连接,并传输FTP控制命令.

在这里插入图片描述

FTP数据连接分为主动模式和被动模式

主动模式服务器主动发起数据连接

被动模式服务器被动等待数据连接

在这里插入图片描述

1.2 FTP主动模式

主动模式:客户端给服务端的21控制端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会连接客户端已打开的那个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件
在这里插入图片描述

1.3 FTP被动模式

被动模式:客户端给服务器端的21端口发命令说,我要下载什么什么,服务端知道后,就打开一个空闲的端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧。于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西

在这里插入图片描述

2. 实例:匿名用户访问FTP服务

(1)设置匿名用户能够下载和上传文件的命令配置;

[root@clr ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
tmpfs           394M   28K  394M    1% /run/user/0
/dev/sr0        4.4G  4.4G     0  100% /mnt    #查看光盘镜像文件是否已经挂载成功
[root@clr /etc/yum.repos.d]# yum install -y vsftpd   #安装vsftpd服务
已加载插件:fastestmirror, langpacks
已安装:
  vsftpd.x86_64 0:3.0.2-28.el7                                                          
完毕!
[root@clr /etc/yum.repos.d]# rpm -qc vsftpd  #查看vsftpd安装包配置文件所在的位置
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf    #vsftpd的配置文件

[root@clr /etc/yum.repos.d]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# cp vsftpd.conf{,.bak}   #先将vsftpd的配置文件备份下来
[root@clr /etc/vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf  #修改vsftpd的配置文件

 12 anonymous_enable=YES   #开启匿名用户访问
 13 anon_umask=022   #设置匿名用户创建文件和目录的默认权限为755

 17 local_enable=YES    #开启本地用户访问
 20 write_enable=YES   #为匿名用户开放服务器的写权限

 24 local_umask=022   #本地用户对文件和目录权限
 30 anon_upload_enable=YES  #取消注释,允许匿名用户上传文件
 34 anon_mkdir_write_enable=YES    #允许匿名用户创建和上传目录
 35 anon_other_write_enable=YES    #开启其他权限,允许匿名用户删除、重命名、覆盖等操作
 
 [root@clr /etc/vsftpd]# cd /var/
[root@clr /var]# ls
account  cache  db     ftp  gopher    lib    lock  mail   nis  preserve  spool   tmp
adm      crash  empty  games  kerberos  local  log   named  opt  run       target  yp
[root@clr /var]# cd ftp/
[root@clr /var/ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 1014 2020 pub  #默认权限为755,只允许超级用户root具有写入修改权限

[root@clr /var/ftp]# mkdir gzy
[root@clr /var/ftp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 419 22:27 gzy
drwxr-xr-x. 2 root root 6 1014 2020 pub
[root@clr /var/ftp]# chmod 777 gzy/    #修改gzy目录为所有用户可读可修改权限
[root@clr /var/ftp]# ll
总用量 0
drwxrwxrwx. 2 root root 6 419 22:27 gzy  #允许匿名用户在gzy目录中进行写入和修改权限
drwxr-xr-x. 2 root root 6 1014 2020 pub

[root@clr ~]# systemctl start vsftpd  #开启ftp服务
[root@clr ~]# systemctl enable vsftpd  #将ftp服务设置为开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

[root@clr ~]# netstat -lntp | grep :21   #查看ftp的21号端口状态,是否已经打开
tcp6       0      0 :::21                   :::*                    LISTEN      11577/vsftpd        
[root@clr ~]# cd /var/ftp/
[root@clr /var/ftp]# ls
gzy  pub
[root@clr /var/ftp]# cd gzy/
[root@clr /var/ftp/gzy]# echo 'helloworld' > 123.txt   #向gzy/目录中的123.txt文件中写入helloworld
[root@clr /var/ftp/gzy]# ls
123.txt
[root@clr /var/ftp/gzy]# cat 123.txt
helloworld
[root@clr /var/ftp/gzy]# cp /etc/passwd ./passwd.txt  #将/etc/passwd文件复制到当前目录下中,并重命名为passwd.txt
[root@clr /var/ftp/gzy]# ls
123.txt  passwd.txt

(2)客户端WIN10验证连接FTP服务器的结果;

切记一定要关闭防火墙,防止影响实验结果;

在这里插入图片描述

匿名用户连接FTP服务器;

在这里插入图片描述

匿名用户连接FTP服务器下载文件的情况;

在这里插入图片描述

匿名用户切换到桌面,并从桌面上传文件和下载文件到桌面的情况;

在这里插入图片描述

在这里插入图片描述

3. 实例:本地用户访问FTP服务

(1) 设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录);

[root@clr /var/ftp]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# cp vsftpd.conf vsftpd.conf.bak.local  #备份vsftpd.conf的配置文件,养成备份的好习惯
[root@clr /etc/vsftpd]# vim vsftpd.conf
anonymous_enable=NO     #关闭匿名用户访问,只要禁止匿名用户登录后,那么匿名用户的其他所有选项都不生效
local_enable=YES   #允许本地用户登录
# Uncomment this to enable any form of FTP write command.
write_enable=YES   #开放服务器的写权限,允许本地用户上传文件
local_umask=077    #设置仅属主用户拥有被上传文件的权限(反掩码)   

(2)创建本地用户,并重启ftp服务;

[root@clr /etc/vsftpd]# useradd clr   #创建本地用户clr
[root@clr /etc/vsftpd]# useradd gzy    #创建本地用户cgzy
[root@clr /etc/vsftpd]# echo '123456' | passwd --stdin clr
更改用户 clr 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@clr /etc/vsftpd]# echo '123123' | passwd --stdin gzy
更改用户 gzy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@clr /etc/vsftpd]# systemctl restart vsftpd  #重新启动ftp服务

在这里插入图片描述

本地用户从自己家目录中下载文件到当前目录中的情况;

在这里插入图片描述
在这里插入图片描述

(3)将本地用户禁锢在宿主家目录中,不允许访问和切换到其他目录;

[root@clr /var/named]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers   vsftpd.conf      vsftpd.conf.bak.local
user_list  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf  #修改/etc/vsftpd/vsftpd.conf配置文件
chroot_local_user=YES    #将访问禁锢在本地用户的宿主目录中
allow_writeable_chroot=YES   #允许被限制的用户主目录具有写权限
[root@clr /etc/vsftpd]# systemctl restart vsftpd  #重新启动vsftp服务器

在这里插入图片描述

(4)修改用户登录的默认根目录;

[root@clr ~]# cd /etc/vsftpd/
[root@clr /etc/vsftpd]# ls
ftpusers   vsftpd.conf      vsftpd.conf.bak.local
user_list  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@clr /etc/vsftpd]# vim vsftpd.conf


chroot_local_user=YES
allow_writeable_chroot=YES
anon_root=/opt/    #修改匿名用户所在的目录位置为/opt/
local_root=/var/local_cge/html      #修改本地用户所在的目录位置为/var/local_cge/html

[root@clr /opt]# chmod -R 777 /var/    #切记修改本地用户所在的目录的权限修改为777
[root@clr /opt]# chmod 555 /opt/    #切记修改匿名用户所在的目录的权限修改为555

在这里插入图片描述

(5) 使用user_list用户列表文件,设置白名单和黑名单,仅允许部分用户登录;


[root@clr /opt]# vim /etc/vsftpd/user_list   #修改并编辑user_list用户列表文件
root
bin
games
nobody
clr   #将本地普通用户加入到列表文件中

[root@clr /opt]# vim /etc/vsftpd/vsftpd.conf   #修改ftp的配置文件
pam_service_name=vsftpd 
userlist_enable=YES     #启用user_list用户列表文件,用户列表中存在的用户将无法通过ftp服务器连接到系统,列表中之外的用户可以登录到系统
userlist_deny=NO   #该阈值默认为YES,也就是设置黑名单,表示user_list用户表列表中存在的用户名无法登录; 当该阈值设置为NO时,也就是设置白名单,表示仅允许user_list用户表列表中存在的用户登录到系统; 
tcp_wrappers=YES

在这里插入图片描述

客户端在图形界面中,连接FTP服务器的情况;

在这里插入图片描述

直接将FTP服务器中的文件拖到桌面,即可进行文件的下载;

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌上花开,静待绽放!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值