Linux : ftp服务及配置详解

FTP 基本概念
  • 定义:文件传输协议(File Transfer Protocol),采用 C/S 模式工作。
  • 端口
    • 控制端口:21
    • 数据端口:20
FTP 工作原理
模式工作流程连接发起方
主动模式 (Standard)1. 客户端从随机高端口 N 发送 PORT 命令到服务端 21 端口 2. PORT 命令包含客户端数据端口 N+1 3. 服务端用 20 端口连接客户端的 N+1 端口,如果传输数据则需要重新与客户端建立新的连接传输数据服务端 → 客户端
被动模式 (Passive)1. 客户端发送 PASV 命令到服务端 21 端口 2. 服务端随机开启高端口 P,并通过 PORT 命令告知客户端 3. 客户端用 N+1 端口连接服务端的 P 端口,被动模式不需要重新与服务器建立新连接客户端 → 服务端

不同点:
传输数据的连接方式不同:主动模式是服务端向客户端发起数据连接,
而被动模式是客户端向服务端发起数据连接。

相同点:
都是使用21号控制端口进行用户验证和管理。

FTP服务部署

关闭防火墙和selinux

1.安装vsftpd软件包

yum install vsftpd -y
rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64 #查看是否安装

2.vsftpd的主配置文件

vim /etc/vsftpd/vsftpd.confanonymous_enable=YES  #是否允许匿名用户登录
local_enable=YES 	#允许本地用户登录ftp
write_enable=YES	#ftp用户是否有写入权限
local_umask=022		#创建文件的umask值
anon_upload_enable=YES	#是否允许匿名用户上传文件
anon_mkdir_write_enable=YES  #是否允许匿名用户创建目录
anon_other_write_enable=YES	 #是否允许匿名用户能够删除或者重命名文件,目录
xferlog_enable=YES      #控制文件在传输过程中是否被日志记录
connect_from_port_20=YES	#使用20端口传输
chown_uploads=YES       #匿名用户上传文件的所有者为FTP
chown_username=whoever  #whoever修改为ftp用户,匿名用户上传文件的所有者将变成该FTP用户。
xferlog_file=/var/log/xferlog #设置传输文件日志的位置
idle_session_timeout=600   #超过600s空闲自动断开连接
data_connection_timeout=120   #控制数据连接建立后120秒内无交互时,自动断开连接。
deny_email_enable=YES   #禁止下载文件到邮箱
chroot_local_user=YES   #ftp用户是否能够离开自己的家目录,yes表示禁止ftp用户离开自己的家目录
chroot_list_enable=YES  #列表中的ftp用户能否离开家目录,通常与下条命令配合使用
chroot_list_file=/etc/vsftpd/chroot_list #ftp的用户列表如果想要单个ftp用户能够访问其他目录,其他所有ftp用户只能在自己的家目录,则开启上面三条命令,并且在ftp用户列表中写上能够访问其他目录的ftp用户,如果chroot_local_user=YES和chroot_list_enable=YES都是yes,则只有用户列表中的用户能够访问其他目录;如果chroot_local_user=YES,chroot_list_enable=NO,则所有用户都不能离开自己的家目录;
如果chroot_local_user=NO,chroot_list_enable=YES,则只有用户列表中的用户不允许访问其他目录,其他用户都能够访问其他目录

方法2:

[root@xieyuhui vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

查看/etc/vsftpd/目录下的文件,ftpusers和user-list是ftp用户黑名单,默认禁止列表里的这些用户访问ftp,如果想要个别用户能够访问ftp,需要在user-list中写下这个用户,ftpusers中不写这个用户,然后在在vsftpd.conf配置文件中写入userlist_deny=NO,拒绝访问的优先级>允许访问的优先级,所以原来的用户依旧不能访问ftp,而新用户因为不在ftpusers里面,所以能够访问ftp服务

练习

在FTP服务器创建3个用户分别为ftpuser1 ,ftpuser2,ftpuser3,密码设置为redhat

在客户端安装lftp软件包

在这里插入图片描述

1.设置允许匿名用户访问FTP服务器(本次使用centos7版本,默认允许匿名用户访问ftp服务器,因此不做更改)

2.设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下进行文件上传

首先需要让/var/ftp/pub的其他用户有对此目录的写入权限,但如果直接给其他用户权限就太大了,我们可以直接设置ftp用户有对此目录的读写权限

setfacl -m u:ftp:rwx /var/ftp/pub/

修改配置文件

vim  /etc/vsftpd/vsftpd.conf
write_enable=YES  	#写入权限
anon_upload_enable=YES	#匿名用户上传文件的权限

重启服务

systemctl restart vsftpd

在这里插入图片描述

匿名用户成功上传文件

3,设置允许匿名用户访问FTP服务器时能够在/var/ftp/pub目录下创建目录

编辑vsftpd配置文件

vim /etc/vsftpd/vsftpd.confanon_mkdir_write_enable=YES  #允许匿名用户创建目录

重启服务

在这里插入图片描述

成功创建目录(不能创建文件)

4.设置允许匿名用户访问FTP服务器时能够对/var/ftp/pub目录中的文件或目录进行重命名或删除操作

编辑vsftpd配置文件

vim /etc/vsftpd/vsftpd.confanon_other_write_enable=YES  #允许匿名用户进行重命名或删除

重启服务

在这里插入图片描述

在这里插入图片描述

5.设置允许FTP用户访问FTP服务器(默认允许访问,因此不做配置)

6.设置FTP用户访问FTP服务器时,将部分FTP用户访问的目录限制在自己的主目录中,其他FTP用户仍然可以访问其他目录

将ftpuser1和ftpuser2限制,ftpuser3可以访问其他目录

方法1:

编辑ftp用户列表,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了
如果检查发现还有写权限,就会报该错误。

cd /etc/vsftpd/
vim chroot_listftpuser1ftpuser2  #一行一个用户

编辑vsftpd配置文件

vim vsftpd.confchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listallow_writeable_chroot=YES #列表中的用户不允许访问其他目录

重启服务

在这里插入图片描述

在这里插入图片描述

方法2:

在ftpusers里面写上ftpuser1和ftpuser2,在user-list里面写上ftpuser3,然后在配置文件里面加上userlist_deny=NO

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

悲观锁乐观锁与事务注解在项目实战中的应用场景及详细解析

在今天做的项目练习部分中真的学到了很多东西,也补充了许多之前遗漏或是忘记的知识点,但时间精力有限,我就先记录一下今天用到的一个新东西,悲观锁和乐观锁。首先给出实际应用背景:在加入锁和事务注解之前,…

Java构造器与工厂模式(静态工程方法)详解

1. 构造器1.1 构造器的核心意义1.1.1 对象初始化构造器在创建对象 (new) 时自动调用, 用于初始化对象的状态 (如设置字段初始值, 分配资源等)无构造器时: 字段为默认值(0/null/false)有构造器:确保对象创建后即处于有效状态1.1.2 强制初始化…

解决jdk初始化运行,防火墙通信选错专业网络问题

问题描述新项目添加不同版本的jdk,运行时提示防火墙通信策略,选成专用网络。其他人访问后端接口时,提示连接失败。 解决方案:1、在搜索栏中输入 防火墙关键字,选择到防火墙和网络保护2、选择允许应用通过防火墙3、先点…

【Linux】常用命令(三)

【Linux】常用命令(三)1. export1.1 原理1.2 常用语法1.3 示例1.4 书中对命令的解释1.5 生效范围2. 测试服务地址与其端口能否访问2.1 nc(Netcat)命令2.2 telnet2.3 nmap2.4 curl命令 (适用于HTTP/HTTPS 服务)1. export export 是 Linux Shell&#xff…

Pytest项目_day15(yaml)

YAMLYAML是一个对所有编程语言都很友好的数据序列化标准,它是一种直观的能够被电脑识别的数据序列化格式,是一种可读性高且容易被人类阅读的脚本语言YAML语言的本质是一种通用的数据串行化格式适用场景 可以直接序列化为数组、字典解析成本低专门写配置文…

审批流程系统设计与实现:状态驱动、灵活扩展的企业级解决方案

审批流程系统设计与实现:状态驱动、灵活扩展的企业级解决方案 本文基于实际企业级审批系统源码,深入解析如何设计高扩展性、强一致性的审批流程引擎,涵盖状态机设计、多租户隔离、文件服务集成等核心实现。 1. 系统设计概览 审批系统的核心架…

汽车免拆诊断案例 | 2010款奥迪A4L车行驶中发动机偶尔自动熄火

故障现象 一辆2010款奥迪A4L车,搭载CDZ发动机 ,累计行驶里程约为18.2万km。该车行驶中发动机偶尔自动熄火,有时熄火后能够立即重新起动着机,有时需要等待一会儿才能重新起动着机,故障频率较低。因该故障在其他维修厂陆…

Liam ERD:自动生成美观的交互式实体关系图

Liam ERD 是一个可以快速生成美观且具有交互性的数据库实体关系图(ERD)的工具,可以帮助用户实现复杂数据库结构的可视化。 Liam ERD 是一个免费开源的项目,代码托管在 GitHub: https://github.com/liam-hq/liam 功能…

网络协议序列化工具Protobuf

目录前言一、下载注意二、解压安装三、Protobuf的使用1、创建.proto文件2、利用protoc编译.proto文件前言 Protocol Buffers是Google的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。 Protoco…

从表单校验到API网关:全链路输入安全防护指南

从表单校验到 API 网关:全链路输入安全防护指南 在软件系统的安全防御体系中,输入安全是第一道防线,而这道防线的坚固程度直接决定了系统抵御外部攻击的能力。从用户在浏览器中填写表单的那一刻起,到数据经过 API 网关流转至后端服务,每一个环节都可能成为输入攻击的突破…

Flask vs Django:微框架与一站式对决

Flask 简介 1、简介 Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架,又称之为微框架。 "微"的含义:Flask旨在保持核心简洁,本身相当于内核,其他功能需通过扩展…

真实业务场景:mysql慢查询优化(从17秒的查询优化到700毫秒)

慢查询业务场景:原先在我们系统中要统计一些人员的单位 部门信息的数据情况,比如总的男女人数,每个单位下的男女人数等等,然后原来的sql是这样写的 根据一个单位的id 然后对一张表做出多个子查询进行查询,这时候统计记录 由于加载…

远程影音访问:通过 cpolar 内网穿透服务使用 LibreTV

文章目录前言【视频教程】1.关于LibreTV2.docker部署LibreTV3.简单使用LibreTV4.安装cpolar内网穿透5.配置ward公网地址6.配置固定公网地址总结LibreTV 与 cpolar 的协同应用,为用户打造了一条通往高清观影自由的便捷之路。通过这一方案,用户不仅摆脱了商…

Apache ECharts 6 核心技术解密 – Vue3企业级可视化实战指南

简介 ECharts 是百度开源的一个使用 JavaScript 实现的开源可视化库,它能够生动、可交互地展示数据。在 Vue3 项目中集成 ECharts 可以让你的项目更加直观和动态地呈现数据信息。 核心优势 特性SVG渲染器Canvas渲染器缩放保真度★★★★★★★☆☆☆动态交互性能…

考公VS考研,拼哪个性价比高?

即将到来下半年,将迎来考公和考研是两个非常重要的考试,也是许多年轻人为之奋斗的目标。无论是获得一份稳定的“铁饭碗”,还是提升学历学位获得更高的竞争力,都是值得努力的方向。那么,考公vs考研,到底哪个…

python2操作neo4j

环境依赖 jdk、neo4j图数据库 操作一条数据完整demo import os,json,sys,io from py2neo import Graph,Nodetry:sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)sys.stderr io.TextIOWrapper(sys.stderr.buffer, encodingutf-8) except Exception:passcla…

AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏

1. 背景与目标 贪吃蛇是最适合入门的 2D 网页小游戏之一:规则简单、反馈清晰、可扩展空间大(穿墙模式、道具、多食物、排行榜……)。 demo地址:https://game.haiyong.site/snake-game.html 本项目的目标是: 纯前端、…

FreeRTOS-C语言指针笔记

文章目录一级指针指针基本概念指针使用示例代码说明二、二级指针二级指针重点解析一级指针 C语言中的指针是一个非常重要的概念,它存储了变量的内存地址。指针的使用可以使程序更加高效,尤其在处理数组、字符串和动态内存分配时。 指针基本概念 指针变…

界面布局智能建议生成:从功能需求到专业UI的AI加速之路

内容简介: 传统界面设计让产品经理陷入"不懂设计、等设计师"的困境,效率低下还容易被挑刺。本文深度解析DeepSeek驱动的界面布局智能生成技术,通过DESIGN框架提示词模板,让产品经理在30分钟内生成3种专业级界面方案,实现…

【BLE系列-第三篇】数据链路层(LL):广播/连接/扫描流程详解

目录 引言 一、广播及连接建立 1.1 广播类型 1.2 扫描/连接请求与响应 1.2.1 广播流程说明 1.2.1.1 广播流程示例图 1.2.1.2 广播信息设置 1.2.1.3 信道广播 1.2.1.4 信道切换 1.2.1.5 广播间隔 1.2.1.6 接收窗口与理论最小传输时间 1.2.2 扫描/连接流程说明 1.2.…