【linux网络】解读FTP文件传输服务器配置,揭秘百度云下载限速原理

news2025/1/11 0:06:01

目录

一、FTP文件传输协议

1.1FTP工作原理

1.2两种模式介绍

1.3FTP状态码

1.4FTP的三种用户分类

二、vsftpd软件的介绍

2.1服务端介绍

2.2不同操作系统下的客户端登录操作

三、vsftpd的常见配置

3.1修改默认的命令端口

3.2限制匿名用户登录(系统原本是默认匿名可以登录的)

3.3默认匿名用户不可以上传,如果想要开启

3.4指定匿名用户上传的文件默认的所有者和权限

3.5系统用户的默认权限查看

3.6禁锢系统用户

3.7提示信息

3.8pam模块与黑白名单结合使用

3.9限定匿名用户的最大传输速率


一、FTP文件传输协议

1.1FTP工作原理

ftp是一种双通道协议,常用在局域网内使用,ftp使用的是tcp传输的21端口和20端口;

21端口:用于命令控制(传输权限等,以及告知数据传输的端口)

20端口:用于数据传输

1.2两种模式介绍

主动模式:服务端主动开启tcp的20端口 去传输数据给客户端

被动模式:服务端开放随机端口,通过21端口告诉了客户端,被动等待客户端连接

 

1.3FTP状态码

1XX:信息 125:数据连接打开
2XX:成功类状态 200:命令OK     230:登录成功
3XX:补充类     331:用户名OK
4XX:客户端错误 425:不能打开数据连接
5XX:服务器错误 530:不能登录

1.4FTP的三种用户分类

匿名用户:anonymous(匿名用户),对应Linux用户ftp(程序用户)

系统用户:Linux的用户,用户/etc/passwd,密码/etc/shadow

虚拟用户:特定服务的专用用户,独立的用户/密码文件  administer  ##不常用

匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
系统用户共享文件位置:用户家目录

注意:

系统用户登录ftp服务器以后,显示的服务器的根是硬盘真正的根,但登录的位置是系统用户的家目录,再默认情况下,系统用户可以切换至硬盘的根目录下,约等于可以看到整个硬盘的内容(不是很安全)

客户端以匿名用户或者ftp用户登录以后,当前显示的根是服务器的根,也就是程序用户ftp的家目录:/var/ftp

匿名用户的默认权限有哪些(匿名用户可以查看,可以下载/var/ftp目录下的内容)

二、vsftpd软件的介绍

2.1服务端介绍

[root@localhost ftp]#rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd        ##pam认证的配置文件
/etc/vsftpd/ftpusers     ##与pam认证相结合,可以设置访问黑白名单
/etc/vsftpd/user_list    ##与vsftpd.conf的配置结合,可以设置禁锢的黑白名单
/etc/vsftpd/vsftpd.conf  ##服务端的配置文件

2.2不同操作系统下的客户端登录操作

linux系统下载ftp客户端

Windows下推荐filezilla软件,我个人比较喜欢

还可以直接在我的电脑路径下找

还可以在Windows的命令行操作

三、vsftpd的常见配置

3.1修改默认的命令端口

[root@localhost ftp]#vim /etc/vsftpd/vsftpd.conf
listen_port=2121   ##修改默认端口号为2121,配置文件中没有,直接添加

[root@localhost ftp]#systemctl restart vsftpd

3.2限制匿名用户登录(系统原本是默认匿名可以登录的)

[root@localhost ftp]#vim /etc/vsftpd/vsftpd.conf
 12 anonymous_enable=no ##配置文件的第12行修改为no

[root@localhost ftp]#systemctl restart vsftpd

3.3默认匿名用户不可以上传,如果想要开启

[root@localhost pub]#vim /etc/vsftpd/vsftpd.conf
 12 anonymous_enable=YES  ##允许上传的前提一定是允许匿名登录
 29 anon_upload_enable=YES  ##原本是默认注释了,为关闭,需要取消注释,注意:文件系统权限
 33 anon_mkdir_write_enable=YES  ##原本是默认注释了,为关闭,需要取消注释

[root@localhost pub]#systemctl restart vsftpd
[root@localhost pub]#chmod 777 /var/ftp/pub

补充未做的关于ftp用户的实验配置(这些是配置文件没有的内容,需要自行添加):
anon_world_readable_only=NO 只能下载全部读的文件, 默认YES
anon_umask=0333 指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES 可删除和修改上传的文件,默认NO

3.4指定匿名用户上传的文件默认的所有者和权限

[root@localhost pub]#vim /etc/vsftpd/vsftpd.conf
 12 anonymous_enable=YES  ##允许上传的前提一定是允许匿名登录
 29 anon_upload_enable=YES  ##原本是默认注释了,为关闭,需要取消注释,注意:文件系统权限
 33 anon_mkdir_write_enable=YES  ##原本是默认注释了,为关闭,需要取消注释
 48 chown_uploads=YES  ##默认是no,这里调整为yes,取消注释
 49 chown_username=xueyin   ##这里是指定将所有的上传文件的属主和属组权限映射为xueyin,取消注释

[root@localhost pub]#systemctl restart vsftpd

补充未添加的测试(这是配置文件中没有的):
chown_upload_mode=0644  ##可以添加匿名用户上传的落地文件属性

3.5系统用户的默认权限查看

/etc/vsftpd/vsftpd.conf
 16 local_enable=YES  ##默认允许linux用户登录
 19 write_enable=YES  ##默认允许linux用户上传文件,与文件夹的权限相配合
 23 local_umask=022   ##默认系统用户上传文件的默认权限对应umask

3.6禁锢系统用户

登录以后的系统用户权限过大,相当于能够看到整个硬盘的内容,并且下载,所有有了系统用户禁锢,就是限制系统用户只能在自己的家目录下活动,不能切换到根下面去

[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
101 chroot_local_user=YES  ##第101行默认关闭,这里取消注释
102 chroot_list_enable=YES  ##第102行默认关闭,这里取消注释
104 chroot_list_file=/etc/vsftpd/chroot_list  ##第104行默认关闭,这里取消注释

[root@localhost vsftpd]#vim chroot_list  ##/etc/vsftpd目录下没有,需要自行添加
lisi

[root@localhost vsftpd]#chmod -R 555 /home  ###这一步非常重要,要不然不在名单的系统用户会一直报错,但是对匿名用户没有影响,使用登录进去的根是服务器的家目录
[root@localhost ~]#systemctl restart vsftpd

补充搭配(黑名单就不做实验了):
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,即白名单
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,即黑名单

 拓展,这种报错是什么原因?

回答:这是因为没有修改/home家目录的权限,需要有写的权限

[root@localhost opt]#ftp 192.168.20.18
Connected to 192.168.20.18 (192.168.20.18).
220 (vsFTPd 3.0.2)
Name (192.168.20.18:root): xueyin
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection

3.7提示信息

 87 ftpd_banner=Welcome to blah FTP service.  ##默认关闭,这是取消注释,将其开启

3.8pam模块与黑白名单结合使用

[root@localhost vsftpd]#vim /etc/vsftpd/vsftpd.conf
101 chroot_local_user=YES
[root@localhost vsftpd]#vim ftpusers
 16 lisi
[root@localhost vsftpd]#vim /etc/pam.d/vsftpd
  3 auth       required     pam_listfile.so item=user sense=deny file=/etc/v    sftpd/ftpusers onerr=succeed
表明以上实验是一个黑名单

改为下面这个配置,就是个白名单,实验就不做了
auth       required     pam_listfile.so item=user sense=allow  file=/etc/vsftpd/ftpusers onerr=succeed

3.9限定匿名用户的最大传输速率(百度云盘下载限速用的类似的原理)

服务端配置:
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=10240  ##这是配置文件里面没有的,需要自行添加
local_max_rate=10240000  ##这是配置文件里面没有的,需要自行添加

服务端还需要分别在服务器的家目录和用户的家目录下创建两个一模一样的文件,用于测试
[root@localhost pub]#dd if=/dev/zero of=/home/xueyin/bigfile bs=1M count=100
[root@localhost pub]#dd if=/dev/zero of=/var/ftp/pub/bigfile bs=1M count=100

客户端测试:
[root@localhost opt]#wget ftp://192.168.20.18/pub/bigfile  ##匿名用户
[root@localhost opt]#wget ftp://xueyin:"123456"@192.168.20.18/bigfile  ##本地用户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙:实现两个Page页面跳转

效果展示 这篇博文在《鸿蒙:从0到“Hello Harmony”》基础上实现两个Page页面跳转 1.构建第一个页面 第一个页面就是“Hello Harmony”,把文件名和显示内容都改一下,改成“FirstPage”,再添加一个“Next”按钮。 Entry Compone…

[每周一更]-(第73期):介绍容器监控工具-CAdvisor

CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行CAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。 命令行监控Docker容器-docker stats 访问地址 http://localhost:8080/containers/ …

ADS村田电感.mod(spice netlist文件)和.s2p模型导入与区别

ADS村田电感.mod(spice netlist文件)和.s2p模型导入与区别 简介环境过程s2pspice netlist(.mod文件)导入和结果对比 简介 记录了ADS村田电感.mod(spice netlist文件)和.s2p模型导入与区别 环境 ADS2020 …

安顿APP3.0全新升级,引领智能穿戴健康革新,专注预警疾病风险

随着人们生活水平的提高和工作压力的增加,心脑血管疾病已经成为现代社会的严重问题,特别是心梗、脑卒中等疾病已经开始夺去年轻人的生命。 据报道,近年来,多位年轻人因心脑血管疾病突发去世,如42岁的知名男演员、30岁的…

基于猕猴Spike运动解码的不同解码方法性能对比

公开数据集中文版详细描述 参考前文:https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析 参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析 …

【MATLAB源码-第83期】基于matlab的MIMO中V-BALST结构ZF和MMSE检测算法性能误码率对比。

操作环境: MATLAB 2022a 1、算法描述 在多输入多输出(MIMO)通信系统中,V-BLAST(垂直波束形成层间空间时间编码技术)是一种流行的技术,用于提高无线通信的数据传输速率和容量。它通过在不同的…

遥感数据

在研究中,我们常需要遥感数据。在下面的网站中,可以得到遥感数据。 EarthExplorer (usgs.gov)https://earthexplorer.usgs.gov/登陆网站: 通常,在Additional Criteria中,可以下载遥感数据。 不过,这个选项…

集合框架面试题

一、集合容器的概述 1. 什么是集合 集合框架:用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容: 对外的接口、接口的实现和对集合运算的算 法。 接口:表示集合的抽象数据…

Sectigo证书——全球SSL证书第一品牌

随着互联网技术的发展和网络安全意识的提升,SSL证书已经成为确保网络数据传输安全的重要工具。而在众多SSL证书品牌中,Sectigo无疑是其中的佼佼者,被誉为“全球证书第一品牌”。 Sectigo是一个有着超过二十年行业经验的老牌认证机构&#xff…

自定义业务异常处理类加入全局处理器中

自定义业务异常处理类并将其加入全局异常处理器,从而避免业务层直接处理异常造成代码污染,达到业务清晰简洁。 描述 在进行分类模块开发时,删除某个分类时当分类关联了菜品和套餐时,是不允许删除的。我们在管理端删除的时候会提示…

解决在pycharm中使用matplotlib画图问题

第一,再导入包后直接绘图出现: AttributeError: module backend_interagg has no attribute FigureCanvas表明版本不兼容,我们需要加入:matplotlib.use(‘TkAgg’) 导入函数就变成了: import matplotlib matplotlib.…

AtCoder Beginner Contest 329 题解A~F

A - Spread 输入字符串&#xff0c;字符之间加上空格输出 B - Next 输出数组当中第二大的数 C - Count xxx 统计每个字符出现过的最长长度&#xff0c;再累加即可 #include<bits/stdc.h> #pragma GCC optimize("Ofast") #define INF 0x3f3f3f3f #define I…

Java Web——Web开发介绍

什么是Web开发 Web开发是一种创建和维护全球广域网&#xff08;World Wide Web&#xff09;上的网站和应用的技术。全球广域网也称为万维网(www World Wide Web)&#xff0c;是一个能够通过浏览器访问的互联网上的巨大信息库。 Web开发的目标是创建功能齐全、易于使用和安全的…

资深测试总结,现在软件测试有未来吗?“你“的底气在哪里?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、为什么会有 “…

基于鼠群算法优化概率神经网络PNN的分类预测 - 附代码

基于鼠群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鼠群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鼠群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

Android问题笔记四十六:解决open failed: EACCES (Permission denied) 问题

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC &#x1f449;关于作者 专…

低代码在ERP中的理解与应用:提升开发效率与业务灵活性

企业资源规划&#xff08;ERP&#xff09;指通过融合不同部门的信息和流程&#xff0c;提升企业效率、融洽运营的管理体系。ERP系统通过提供一套集成化应用程序&#xff0c;助力企业管理工作流程&#xff0c;包含选购、库存、销售、生产规划等。 低代码&#xff08;Low-Code&a…

皮肤性病科专家谭巍主任提出HPV转阴后饮食七点建议

HPV转阴是每一位感染者都期盼的&#xff0c;因为转阴所以健康&#xff0c;只有转为阴性才意味着不具备传染性&#xff0c;从此也不必再害怕将病毒传染给家人的风险&#xff0c;也不必再担忧持续感染而引发的健康风险。总之&#xff0c;HPV转阴是预示感染者恢复健康与否的主要标…

Windows安装多个版本的Java

在做持续集成CI/CD时&#xff0c;需要用到Jenkins&#xff0c;本人爱好使用各种最新版&#xff0c;down下来之后发现&#xff0c;新版只支持Java11以上的版本了&#xff01;&#xff01; 苦苦找了很久&#xff0c;找不到正规Java8版本的Jenkins安装包&#xff01; 干脆换个思路…

【win32_001】win32命名规、缩写、窗口

整数类型 bool类型 使用注意&#xff1a; 一般bool 的false0&#xff1b;true1 | 2 | …|n false是为0&#xff0c;true是非零 不建议这样用&#xff1a; if (result TRUE) // Wrong! 因为result不一定只返回1&#xff08;true&#xff09;&#xff0c;当返回2时&#xff0c…