• Linux系统的FTP服务


    一、FTP服务概述

    FTP :file transfer protocol:文件传输协议。在网络上用于双向进行传输,也是一个应用程序。c/s架构。

    不同的操作系统有不同的FTP软件,但使用的协议都是一样的。

    FTP基于TCP协议,有两个端口:20和21。

    • 20端口:建立数据连接,数据传输
    • 21端口:连接控制,传输FTP的控制命令

    FTP服务端和客户端:建立连接后,FTP是双向进行的传输。

    FTP建立数据连接的模式:

    • 主动模式:服务器主动向端口发起数据连接
    • 被动模式:服务器等待客户端发起连接
    • 被动模式更容易穿越防火墙,默认就是被动模式。

    二、FTP配置

    2.1 vsftpd服务

    vsftpd的安装和配置

    rpm -q vsftpd		#验证是否安装vsftpd
    yum -y install vsftpd		#安装
    

    在对vsftpd修改配置前,备份配置文件

    cd /etc/vsftpd		#切换到安装vsftpd的目录下查看
    cp vsftpd.conf vsftpd.conf.bak.20240604		#备份
    

    vim /etc/vsftpd/vsftpd.conf编辑配置文件

    vsftpd初始化全局配置:
    anonymous_enable=YES            #开启匿名用户访问。默认已开启
    local_enable=YES                #允许系统用户进行访问
    write_enable=YES                #开放服务器的写权限(若要上传,必须开启),默认已开启
    anon_umask=022                  #设置匿名用户所上传数据的权限掩码(反掩码)
    

    2.2 匿名用户配置

    2.2.1 服务端配置

    vim /etc/vsftpd/vsftpd.conf编辑配置文件

    让匿名用户拥有访问本机和各种权限 
    anon_umask=022                  #设置匿名用户所上传数据的权限掩码(反掩码)。
    anon_upload_enable=YES          #允许匿名用户上传文件。默认已注释,需取消注释
    anon_mkdir_write_enable=YES     #允许匿名用户创建(上传)目录。默认已注释,需取消注释
    anon_other_write_enable=YES     #允许删除、重命名、覆盖等操作。需添加
    

    重启vsftpd服务,关闭安全防护

    systemctl restart vsftpd
    systemctl stop firewalld
    setenforce 0
    

    匿名用户的默认根目录/var/ftp/pub,对该目录赋权777

    chmod 777 /var/ftp/pub
    echo 'hello world!' > test.txt
    
    2.2.2 匿名访问测试
    get 文件名		#下载
    put 文件名		#上传
    

    Windows系统打开开始菜单,输入cmd 命令打开命令提示符

    #建立ftp连接
    ftp 20.0.0.10
    #匿名访问,用户名为ftp,密码为空,直接回车即可完成登录
    ftp> pwd          #匿名访问ftp的根目录为Linux系统的/var/ftp/目录
    ftp> ls           #查看当前目录
    ftp> cd pub       #切换到pub目录
    ftp> get文件名    #下载文件到当前Windows本地目录
    ftp> cd pub
    ftp> get test.txt 	#获取目录中的文件下载到电脑
    ftp> put test4.txt	#将本地文件上传到服务端
    

    安全隐患:匿名用户权限过高,可靠性低。

    实际生产过程中,都会禁止匿名用户登录。

    2.3 系统用户登录配置

    2.3.1 设置本地用户可以访问ftp,禁止匿名用户登录
    vim /etc/vsftpd/vsftpd.conf
    local_enable=Yes        		 #启用本地用户
    anonymous_enable=NO     		 #关闭匿名用户访问
    write_enable=YES        		 #开放服务器的写权限(若要上传,必须开启)
    local_umask=077          		 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
    

    重启vsftpd服务

    在/opt目录下:

    echo 'hello world!' > test.txt
    

    在Windows系统打开开始菜单,输入cmd 命令打开命令提示符,登录用户test1

    用户(20.0.0.10:(none)): test1
    331 Please specify the password.
    密码:
    
    230 Login successful.
    
    ftp> cd /opt
    250 Directory successfully changed.
    ftp> get /opt/test.txt
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for /opt/test.txt (13 bytes).
    226 Transfer complete.
    ftp: 收到 13 字节,用时 0.00秒 13000.00千字节/秒。
    

    在Windows的用户文件夹中可以看到test.txt文件,内容为hello,world!

    2.3.2 对本地用户访问切换目录进行限制
    切换目录的限制配置 :
    vim /etc/vsftpd/vsftpd.conf
    chroot_local_user=YES   		 #将访问禁锢在用户的宿主目录中 取消注释即可
    #下面新增行
    allow_writeable_chroot=YES		 #允许被限制的用户主目录具有写权限
    

    重启服务即可。

    系统用户登录时,把用户禁锢在家目录,系统用户只能在自己的家目录操作,包括root用户

    2.4 黑名单和白名单

    黑名单:在名单上的不允许登录:允许所有,拒绝个别

    白名单:只有在名单上的才允许登录:拒绝所有,允许个别。常用。

    编辑黑名单白名单相关配置在配置文件/etc/vsftpd/vsftpd.conf的最下方。

    2.4.1 黑名单

    黑名单默认开启

    userlist_enable=YES		#启用user_list用户列表文件
    #下方新增行
    userlist_deny=YES		#这个默认就是yes,注释掉也默认YES
    

    用户列表文件:/etc/vsftpd/userlist,控制用户访问。

    修改文件,添加黑名单,不用重启,立刻生效。

    2.4.2 白名单

    设置白名单只要修改下行

    userlist_deny=NO	#这也说明黑名单、白名单是相反的用法
    

    userlist_deny改成NO后,即为白名单

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

    此时用户列表文件/etc/vsftpd/userlist内容为白名单

    特别的,有一点要注意:/etc/vsftpd/ftpusers里记录的用户,即使在白名单上也不能登录,这个文件相当于白名单里的黑名单

    要想使用root用户,把ftpusers里面的root用户注销掉即可

    2.5 FTP命令与工具

    命令:

    rz 文件名 #下载指定文件到服务器
    sz 文件名 #把服务器的文件下载到客户端
    

    工具:一般有图形化界面,更方便更直观。

    FileZilla

  • 相关阅读:
    21-前端与后端动静分离
    MySQL:事务管理
    计算机毕业设计之java+javaweb的超市库存管理系统
    docker保存镜像、打包tar、加载tar镜像
    设计一个基于 GraphQL 的 Node.js 工单系统
    计算机毕业设计node.js+Vue+Element驾校信息管理系统
    禁用Win10自动更新
    Vue实现封装自定义指令
    Python教程(12)——Python数据结构集合set介绍
    adb调试系统app
  • 原文地址:https://blog.csdn.net/weixin_44265455/article/details/139447665