• FTP 文件传输协议:概念、工作原理;上传下载操作步骤


    目录

    FTP

    概念

    工作原理

    匿名用户

    授权用户

    FTP软件包

    匿名用户上传下载实验步骤

    环境配置

    下载

    上传

    wget

    授权用户上传下载步骤

    root用户登录FTP步骤

    监听

    设置端口号范围

    修改用户家目录

    匿名用户

    授权用户


    FTP

    概念

    FTP(File Transfer Protocol)是一种文件传输协议,用来上传和下载,实现远程共享文件,和统一管理文件。FTP允许用户在两台计算机之间传输文件,其中一台计算机充当服务器,另一台计算机充当客户端。

    工作原理

    1. 连接建立
      1. 客户端使用随机端口(>1024的端口,高位端口)发起连接请求,连接到运行FTP服务的服务器。连接通常使用21端口号。
    2. 身份验证
      1. 客户端需要输入用户名和密码进行身份验证,以确保只有授权用户才能访问服务器上的资源。
    3. 命令和响应
      1. 一旦连接和身份验证成功,客户端通过发送FTP命令与服务器进行通信。服务器接收这些命令并作出相应的响应。典型的命令包括列出目录、改变目录、上传和下载文件等。
    4. 数据传输模式(默认为被动模式)
      1. 主动模式(服务器主动向客户端发起连接)
        1. 客户端在启动时打开一个随机高位端口并告知服务器该端口号,然后服务器从其数据端口(通常是20)连接到客户端指定的端口以传输数据。
        2. 客户端的防火墙会拦截服务器发起的连接,所以连接模式默认为被动模式
      2. 被动模式(服务器等待客户端向自己发起连接)
        1. 服务器打开一个随机高位端口并告知客户端该端口号,然后客户端(随机端口)连接到服务器的这个端口进行数据传输。
    5. 数据传输
      1. 数据传输通道建立后,文件开始在客户端和服务器之间进行传输。数据可以是文件内容、目录列表等。
    6. 连接终止
      1. 文件传输完成后,客户端可以发送命令断开连接,结束会话。

    匿名用户

    无需经过授权可以连接到FTP服务器,匿名用户一般只能进行对服务器进行下载操作

    在服务器安装过FTP服务的软件包后,可以看到本地的用户账号文件中多出了一个名为ftp的用户,该用户就是匿名用户

    授权用户

    连接FTP时需要登录进行身份验证,授权用户通常权限比匿名用户高,比如下载和上传

    FTP软件

    服务端软件包名:vsftpd

    客户端软件包名:ftp

    匿名用户上传下载实验步骤

    环境配置

    准备两台CentOS 7 虚拟机,一台做服务器(192.168.10.101)一台做客户端(192.168.10.102)

    关闭内核安全机制

    关闭服务端的防火墙并安装服务端的FTP服务软件包

    同时安装客户端的FTP服务软件包

    先开启服务端的FTP服务

    此时在客户端(102)就可以尝试连接服务器(101)

    可以通过 exit、quit、bye 退出连接

    下载

    当你在 /var/ftp FTP服务的根目录下创建一个文件,就可以在客户端通过 get 命令来下载该文件到连接服务器时所在目录位置下

    或在末尾加入路径以指定下载时指定存放位置和名称

    如果此时关闭客户端的防火墙,再连接FTP服务器

    关闭被动模式,就进入了主动模式,再尝试下载文件,就可以在主动模式下下载文件了

    所以主动模式还是被动模式都是由客户端决定的,而不是由服务器决定的

    上传

    默认配置下的FTP服务,匿名用户是没有上传权限的

    所以我们需要修改服务端的配置文件

    为了讲解方便,这里去除了配置文件内注释的行,然后再打开FTP的配置文件

    • anon_umask=022:指定匿名用户创建文件和目录时的umask值,022表示文件的权限为666-022=644,目录的权限为777-022=755
    • anon_upload_enable=yes:允许匿名用户上传文件到服务器
    • anon_mkdir_write_enable=yes:允许匿名用户创建新目录
    • anon_other_write_enable=yes:允许匿名用户对文件进行其他写操作,比如删除和重命名文件

    由于修改了配置文件需要重启服务

    由于刚才只是修改了配置文件中的权限,但是在系统中对于文件和目录还有权限的控制

    再修改系统中对于匿名用户进行操作的目录进行权限上的修改

    使用put命令上传文件

    wget

    通过 wget 客户端在不登录FTP的情况下直接下载FTP服务器中的文件

    授权用户上传下载步骤

    对授权用户的访问,仅限在该用户的家目录下

    在服务端新建一个用户,用于在客户端进行授权用户的登录

    • chroot_local_user=YES:把本地用户(local_user)锁定在其主目录下,限制其无法切换到其他目录。
    • allow_writeable_chroot=YES:让本地用户在其主目录下创建和写入文件。通常情况下如果chroot_local_user设为YES,用户由于被锁定在主目录下而无法写入文件,但设置了allow_writeable_chroot=YES后,这些用户将可以在其主目录下写入和创建文件。

    重启服务

    如果不设置上面两个选项,授权用户就可以通过在FTP服务器中使用 cd / 到系统的根目录,而修改完后只能cd 到 自己用户的根目录

    root用户登录FTP步骤

    修改ftp存放禁止登录用户的文件

    将root注释或删除

    编辑拒绝用户连接的列表文件

    将root用户也注释掉

    因为没有修改主配置文件,所以不用重启服务

    此时就可以用root用户登录了

    在vsftpd的配置文件(/etc/vsftpd/vsftpd.conf)中也可以看到用户列表启用的选项

    把YES改为NO就不启用用户列表,列表文件就不会生效了

    还可以添加一个选项:userlist_deny=NO,如果在启用用户列表的情况下,再添加该选项,FTP服务器只有用户列表中的用户可以访问

    该选项默认为YES,也就是拒绝用户列表中的用户访问

    在用户列表文件(/etc/vsftpd/user_list)内也能看到相关注释

    监听

    vsftpd服务默认是通过Xinetd超级服务来进行管理,当有人访问vsftpd服务时,Xinetd就唤醒该服务,没人访问就让该服务休眠

    如果要修改端口,不想让Xinetd来管理vsftpd服务,就打开监听选项,并添加监听的IP地址,指定访问vsftpd服务的IP地址,指定端口,取消ipv6的监听

    修改vsftpd服务的配置文件

    保存并退出,重启服务

    此时在客户端(102)就需要指定端口来访问FTP服务

    设置端口号范围

    修改配置文件,添加相关选项

    仅限于被动模式下,才分配指定端口号范围内的端口

    保存并退出,重启服务

    修改用户家目录

    匿名用户

    在服务端添加选项,指定目录

    保存并退出,重启服务

    在匿名用户的家目录下创建一个文件用于测试

    此时登录到匿名用户也就进入了指定的家目录,创建的文件也能看到

    授权用户

    在服务端的配置文件中添加选项

    保存退出,重启服务

    在客户端登录也可以看到测试的文件

  • 相关阅读:
    【vue2第十八章】VueRouter 路由嵌套 与 keep-alive缓存组件(activated,deactivated)
    数据卷(Data Volumes)&dockerfile
    C#串口官方库
    Jmeter配置性能监控插件
    怎么创建css样式并让样式在一条线上
    Servlet工作过程和生命周期
    空洞卷积详解(输入输出大小分析)
    Spring-day02 容器的概念,容器中的对象,IOP入门
    Vuex基础?有这篇就够啦
    idea插件下载后删除不掉或者在Setting中看不到---去插件位置中删除掉,但是在AppData文件夹内删除掉
  • 原文地址:https://blog.csdn.net/m0_65551023/article/details/140049770