文件服务FTP

文章目录

  • 一、FTP协议
  • 二、VSFTPD服务介绍
    • 基础配置
    • 匿名用户访问(默认开启)
    • 本地用户访问
    • 虚拟用户访问

一、FTP协议

FTP协议:文件传输协议(File Transfer Protocol)

  • 协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准
    • FTP运行在OSI模型的应用层,并利用传输协议TCP在不同的主机之间提供可靠的数据传输
    • FTP在文件传输中还支持断电续传功能,可以大幅度减少CPU网络带宽的开销

FTP模型

  • 用户接口:提供一个用户接口并使用客户端协议解释器的服务
    • 客户端协议解释器:向远程服务器发送命令并建立客户数据传输过程
    • 服务端协议解释器:响应客户协议机发出的命令并驱动服务端数据传输过程
    • 客户端数据传输协议:负责完成和服务器数据传输过程及客户端本地文件系统的通信
    • 服务端数据传输协议:负责完成和客户数据过程及服务器端文件系统的通信

控制连接(端口号21)

  • 主要用来传送在实际通信过程中需要执行的FTP命令及命令的响应
    • 只需要很小的网络带宽
    • FTP服务端监听21端口号来等待控制连接建立
    • 建立控制连接后,还需要验证客户身份,决定是否建立数据连接
    • 当需要目录列表,传输文件时,才建立数据连接,并且每次客户端都是用不同的端口号来建立数据连接。数据传输完毕,就中断这条临时的数据连接
    • 在FTP连接期间,控制连接始终保持通常的连接状态。在数据连接存在期间,控制连接必须存在;一旦控制连接断开,数据连接会自动关闭。

数据连接(端口号20)

  • FTP服务端监听20端口来等待数据连接
    • 数据连接依赖于控制连接
    • 建立方式(主动被动都是相对服务器而言)

主动模式

  • 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口
    • 控制连接建立后,客户端进行身份验证,协商数据连接采用主动模式;随后客户端会向FTP服务器发送Port报文,表明自己监听的IP+端口,并等待FTP服务器(20端口)向自己监听的IP+端口发起数据连接请求。
    • 服务端发起数据连接请求,建立数据连接

被动模式

  • 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口;
    • 控制连接建立后,客户端进行身份验证,协商数据连接采用被动模式;随后客户端向服务器发送PASV报文,表示我们采用被动模式
    • 服务端收到PASV报文,于是向客户端发送Port报文,表明自己监听的IP+端口
    • 客户端发起数据连接请求,建立数据连接

分为控制连接(端口号21)和数据连接(端口号20)
在这里插入图片描述

二、VSFTPD服务介绍

  • 服务包:vsftpd
  • 服务类型:由systemd启动的守护进程
  • 配置单元:/usr/lib/system/vsftpd.service
  • 守护进程:/usr/sbin/vsftpd
  • 端口:21(ftp),20(ftp-data)
  • 主配置文件:/etc/vsftpd/vsftpd.conf
  • 用户访问控制配置文件:/etc/vsftpd/ftpusers /etc/vsftpd/user_list
  • 日志文件:/etc/logrotate.d/vsftpd
  • 配置文件参数
参数作用
listen=NO是否以独立运行的方式监听服务
listen_address=ip地址设置要监听的IP地址
listen_port=21设置FTP服务的监听端口
download_enable=YES是否允许下载文件
userlist_enable=YES设置用户列表为“允许”
userlist_deny=YES设置用户列表为“禁止”
max_clients=0最大客户端连接数,0为不限制
max_per_ip=0同一IP地址的最大连接数,0为不限制
anonymous_enable=YES是否允许匿名访问
anon_upload_enable=YES是否允许匿名用户上传文件
anon_umask匿名用户上传文件的umask
anon_root=/var/ftp匿名用户的ftp根目录
anon_mkdir_write_enable=YES是否允许匿名用户创建目录
anon_other_write_enable=YES是否开放匿名用户的其他写入权限(重命名、删除等)
anon_max_rate=0匿名用户的最大传输速率,0为不限制
local_enable=yes是否允许本地用户登录
local_umask=022本地用户上传文件的umask值
local_root=/var/ftp本地用户的ftp根目录
chroot_local_user=YES是否将用户权限禁锢在ftp目录,以确保安全
local_max_rate=0本地用户的最大传输速率,0为不限制

基础配置

安装vsftp
[root@localhost ~]#yum -y install vsftpd
准备分发的文件
[root@localhost ~]#touch /var/ftp/abc.txt
启动服务
[root@localhost ~]#systemctl start vsftpd 
[root@localhost ~]#systemctl enable vsftpd
关闭防火墙
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
  • 客户端工具

Linux中

安装的都是客户端连接工具

  • 第一种
[root@localhost ~]#yum install ftp -y 
[root@localhost ~]#ftp <IP地址>
username:.......anonymous
password:.......
  • 第二种
[root@localhost ~]#yum install lftp -y 
[root@localhost ~]#lftp <IP地址>
  • 区别
    • ftp工具是一定要输入用户名称和密码的,登录成功或者失败会给出提示。lftp不会直接给出登录成功或者失败的提示,需要输入ls工具才可以发现是否连接成功,优点在于连接更加方便

windows中

第一种

  • 可以在浏览器、允许窗口或者资源管理器中输入ftp://IP地址/,这样访问的是ftp的根位置,如果需要访问相关目录可以输入ftp://IP地址/目录/文件名

第二种

  • 在cmd窗口中,输入命令ftp <IP地址>即可访问

匿名用户访问(默认开启)

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES 
anon_umask=022 
anon_upload_enable=Yes 
anon_mkdir_write_enable=Yes
anon_other_write_enable=Yes 
local_enable=YES 
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
tcp_wrappers=YES 
[root@localhost ~]# systemctl restart vsftpd
linux的目录权限会限制我们不允许往里新建文件,但是如果直接添加目录的w权限会导致触发他的安全判断问题,所以就把ftp里的pub目录的属主属组改成ftp解决,并且添加写权限
chown ftp:ftp /var/ftp/pub
chmod 777 /var/ftp/pub
现在就可以往里写文件了

本地用户访问

使用本地用户(在linux服务端下创建的可以登录的用户)登录成功时位置在家目录的位置

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
local_enable=YES 
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
tcp_wrappers=YES 
[root@localhost ~]# systemctl restart vsftpd 
[root@localhost ~]# systemctl enable vsftpd 
注意:出现在/etc/vsftpd/ftpuser /etc/vsftpd/user_list这两个文件 中的内容将会被定义为黑名单

虚拟用户访问

1、创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。

[root@localhost ~]# cd /etc/vsftpd/ 
[root@localhost vsftpd]# vi vuser.list 
eagle 
centos 
cisco 
centos 
huawei 
centos

2、使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件

3、降低数据库文件的权限(避免其他人看到数据库文件的内容)

4、把原始的明文信息文件删除。

[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db 
[root@localhost vsftpd]# file vuser.db 
vuser.db: Berkeley DB (Hash, version 9, native byte-order) 
[root@localhost vsftpd]# chmod 600 vuser.db 
[root@localhost vsftpd]# rm -f vuser.list

5、创建一个本地用户,用来做虚拟用户在本地的代理,为了安全起见,禁止这个本 地用户登录

[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual 
[root@localhost vsftpd]# ls -ld /var/ftproot/ 
drwx------. 2 virtual virtual 59 810 23:04 /var/ftproot/ 
[root@localhost vsftpd]# chmod -Rf 777 /var/ftproot/

6、新建一个用于虚拟用户认证的PAM文件vsftpd.vu,利用pam模块(linux内核的一个认证模块)做一个认证

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vu 
auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser

7、配置文件

[root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
local_enable=YES 
guest_enable=YES
guest_username=virtual 
allow_writeable_chroot=YES 
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd.vu 
userlist_enable=YES 
tcp_wrappers=YES 
[root@localhost vusers_dir]# systemctl restart vsftpd
用刚刚创建好的用户登录,但是只能登录,不能写文件,想要给权限,这个用户的权限是被匿名用户权限控制的

8、如果想要针对不同的用户设置不同的权限

[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/ 
[root@localhost vsftpd]# cd /etc/vsftpd/vusers_dir/ 
[root@localhost vusers_dir]# touch huawei 
[root@localhost vusers_dir]# vi eagle 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES 
anon_other_write_enable=YES 
[root@localhost vusers_dir]# vi /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
local_enable=YES 
guest_enable=YES
guest_username=virtual 
allow_writeable_chroot=YES 
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd.vu  #记得修改这里为我们自己的认证文件
userlist_enable=YES 
tcp_wrappers=YES 
user_config_dir=/etc/vsftpd/vusers_dir #告诉主配置文件,我们下面还有配置
[root@localhost vusers_dir]# systemctl restart vsftpd
huawei没有权限
eagle有权限

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux的基本指令】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 1、ls 指令 2、 pwd命令 3、cd 指令 4、touch指令 5、mkdir指令&#xff08;重要&#xff09; 6、rmdir指令 && rm 指令&#xff08;重要&#xff09;…

中使用 MOOTDX库读取通达信的数据,WIN+PYTHON,最新问题排查

M项目概述 - MOOTDXhttps://www.mootdx.com/zh-cn/latest/帮助文档https://www.mootdx.com/zh-cn/latest/​​​​​​​​​​​​​​​​​​​​​ 库的安装 注&#xff1a;我这的安装过程必须要ROOT权限&#xff0c;所以我用管理员的权限运行了控制台 pip install moot…

SEO文章自动生成发布网站工具【网站维护必备】

在SEO优化的过程中&#xff0c;高质量的原创文章是吸引搜索引擎和用户的关键。然而&#xff0c;对于许多站长和网站管理员而言&#xff0c;创作大量原创内容可能是一项繁琐而耗时的任务。为了解决这一难题&#xff0c;免费的147SEO软件应运而生&#xff0c;通过输入关键词或标题…

Red Hat Enterprise Linux 6.10 安装图解

引导和开始安装 选择倒计时结束前&#xff0c;通过键盘上下键选择下图框选项&#xff0c;启动图形化安装过程。需要注意的不同主板默认或者自行配置的固件类型不一致&#xff0c;引导界面有所不同。也就是说使用UEFI和BIOS的安装引导界面是不同的&#xff0c;如图所示。若手动调…

Jenkins环境配置篇-更换插件源

作为持续集成的利器 Jenkins 已经得到了广泛地应用&#xff0c;仅仅作为一个工具&#xff0c;Jenkins 已然有了 自己的生态圈&#xff0c;支持其的 plugin 更是超过 1300。在实际中如何使用以及如何更好地使用 jenkins&#xff0c;一直是大家在实践并讨论的。本系列文章将会从如…

【想要安利给所有人的开发工具】最强工具ChatGPT——分享一些使用经验

目录 &#x1f525;个人使用ChatGPT的经验 &#x1f525;如何使用ChatGPT 方法一 方法二 &#x1f525;&#x1f525;提问技巧分享 1、英语翻译员 2、面试官 3、javascript 控制台 4、Excel表格 5、作曲家 6、辩手 7、小说家 8、诗人 9、数学老师 10、网络安全…

【漏洞复现】Hikvision摄像头产品代码执行漏洞(CVE-2021-36260)

Nx01 产品简介 Hikvision&#xff08;海康威视&#xff09;是一家在中国颇具影响力的安防公司&#xff0c;其网络摄像头产品在市场上占据了相当大的份额。Hikvision的网络摄像头产品线非常丰富&#xff0c;涵盖了各种型号和功能&#xff0c;以满足不同用户的需求。 Nx02 漏洞描…

spring data mongo 在事务中,无法自动创建collection

spring data mongo 在事务中,无法自动创建collection org.springframework.dao.DataIntegrityViolationException: Write operation error on server xxx:30001. Write error: WriteError{code=263, message=Cannot create namespace xxx.xxxin multi-document transaction.…

分类预测 | Matlab实现KPCA-EBWO-SVM分类预测,基于核主成分分析和改进的白鲸优化算法优化支持向量机分类预测

分类预测 | Matlab实现KPCA-EBWO-SVM分类预测&#xff0c;基于核主成分分析和改进的白鲸优化算法优化支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-EBWO-SVM分类预测&#xff0c;基于核主成分分析和改进的白鲸优化算法优化支持向量机分类预测分类效果基本描述程序设计参…

第一部分 概述

目录 一、计算机网络在信息时代的作用 大众熟悉的三大类网络有 Internet 互连网与互联网的区别 可以从两种不同的方面来认识互联网&#xff1a; 互联网在生活中的地位 互联网 互联网负面影响 二、互联网的概述 网络的网络 基本概念 互连网基础结构发展的三个阶段 万维网www(…

【征服redis2】redis的事务介绍

目录 目录 1.redis事务介绍 2 事务出错的处理 3.Java如何使用redis事务 1.redis事务介绍 在前面我们介绍了redis的几种典型数据结构和应用&#xff0c;本文我们来看一下redis的事务问题。事务也是数据库的重要主题&#xff0c;熟悉关系型数据库的读者应该对事务比较了解&a…

全开源多城市同城信息小程序源码(Laravel 框架),同城分类信息发布便民小程序系统【非DZ】

同城生活分类信息小程序&#xff0c;人才招聘、房产二手 多城市地区同城分类信息发布&#xff0c;商家入驻等功能 小程序前后端代码开源无加密&#xff0c;可进行二次开发 【源码运行要求】 1、需要已认证的微信小程序 2、已备案的域名及服务器空间 推荐使用宝塔面板LinuxPHP…

为vs code配置unity开发环境

1.安装.NET.Core SDK 我们可以访问官网下载安装SDK及tool&#xff08;https://www.microsoft.com/net/download/core&#xff09;下载。有的系统只提供了执行文件&#xff0c;没有提供安装包&#xff0c;需要自己做一些配置。 下载好对应的版本就可以安装了&#xff0c;安装好以…

无人机打击激光器

激光器的应用非常广泛&#xff0c;涵盖了多个领域。以下是一些主要的激光器应用&#xff1a; 医疗领域&#xff1a;激光器在医疗行业中有着重要应用&#xff0c;比如用于激光手术&#xff08;如眼科手术&#xff09;、皮肤治疗、牙科治疗、肿瘤治疗等。 工业制造&#xff1a;在…

小白水平理解面试经典题目LeetCode 121 Best Time to Buy and Sell Stock

121 Best Time to Buy and Sell Stock (买卖股票的最佳时机) 你好&#xff0c;2024年的第一个月&#xff0c;又是秋风萧瑟天气凉&#xff0c;草木摇落露为霜。.。。在这个特殊的时代&#xff0c;作为我们普通的一个打工人&#xff0c;我们用这道题&#xff0c;开启对这个不符合…

Spark面试题

1. spark core 1.简述hadoop 和 spark的不同点&#xff08;为什么spark更快&#xff09;♥♥♥ shuffle都是需要落盘的&#xff0c;因为在宽依赖中需要将上一个阶段的所有分区数据都准备好&#xff0c;才能进入下一个阶段&#xff0c;那么如果一直将数据放在内存中&#xff0c…

线性规划案例分享

今天想写一个最优传输的简单实现&#xff0c;结果学歪了&#xff0c;学到线性规划去了&#xff0c;这里我发现了一个宝藏网站 虽然是讲计量经济的&#xff0c;但是里面提供的公式和代码我很喜欢&#xff0c;有时间可以好好读一下 https://python.quantecon.org/lp_intro.html …

【咕咕送书 | 第八期】羡慕同学进了大厂核心部门,看懂这本书你也能行!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论…

git本地分支的合并

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a;1.4&#xff09;报错分析 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit2.2&#xf…

LabVIEW振动筛螺栓松动故障诊断

LabVIEW振动筛螺栓松动故障诊断 概述&#xff1a;利用LabVIEW解决振动筛螺栓松动的故障诊断问题。通过集成的方法&#xff0c;不仅提高了故障检测的准确性&#xff0c;还优化了维护流程&#xff0c;为类似的机械设备故障提供了可靠的解决方案。 由于工作条件复杂&#xff0c;…