Windows功能之FTP服务器搭建
一、创作背景
之前有用linux系统搭建过ftp服务器,最近想着用windows系统也顺便搭建一个,看网上有第三方服务软件一键部署,记得windows可以不借助第三方软件就可以搭建,就想顺便操作试试,结果老是连接不上,费了点时间,在这里总结下操作的步骤,并记录下搭建过程遇到的一些问题。
二、环境准备
虚拟机软件:VMware® Workstation 16 Pro
操作系统:windows 7 企业版
三、操作步骤
(一)启用IIS及FTP服务
1、开启windows功能
打开控制面板->程序->启用或关闭windows功能->勾选:
1) Internet信息服务->展开后勾选FTP服务器、FTP扩展性
2) Web管理工具->IIS管理控制台
点击确定等待安装完成。
2、验证IIS安装
安装完成后,在【开始】菜单->搜索"IIS"->打开Internet信息服务(IIS)管理器
(二)配置用户账户与权限
1、创建专用FTP用户
右键“计算机” ->管理 ->本地用户和组 ->用户 ->右键新建用户 -> 设置用户名及密码(建议勾选“密码永不过期”)
2、设置文件夹权限
右键共享文件夹 ->属性 ->安全 ->添加新建的用户 ->勾选“读取”和“写入”权限。
(三)创建FTP站点
1、新建站点
在IIS管理器中->右键“网站”->选择“添加FTP站点”->输入站点名称(如MyFTP)->设置站点目录的物理路径。
2、配置绑定与SSL
1)IP地址:选择本机IP或“全部未分配”(若需局域网访问建议绑定具体IP)
2)端口:默认21(若端口冲突可改为2121等)
3)SSL:选择“无SSL”或根据需求启用加密
3、设置身份验证与权限
1)身份验证:勾选“基本身份验证”
2)授权:选择“指定用户”或“所有用户” -> 设置读取/写入权限。
(四)防火墙与网络配置
1、开放防火墙端口
手工配置防火墙入站规则:
1)控制面板 -> 系统和安全 -> Windows防火墙 -> 高级设置 -> 右键入站规则 -> 新建规则 -> 允许TCP端口21(或自定义端口);
规则类型:端口
协议和端口:TCP、特定本地端口21
操作:允许连接
配置文件:专用、公用
名称:允许TCP端口21
新添加的入站规则默认启用
2)若使用被动模式,需额外开放TCP端口范围1024-65535。
使用FTP服务器自带防火墙配置:
控制面板 -> 系统和安全 -> Windows防火墙 -> 允许程序或功能通过Windows防火墙 -> 更改设置 -> 勾选FTP服务器(家庭、公用)-> 确定
2、局域网/外网访问测试
在宿主机上,打开CMD窗口,执行ftp IP地址 -> 输入账号密码验证连接
四、问题思考
1、当用宿主机文件资源管理器,目录框内输入ftp://IP地址,并且输入账号密码连接,提示FTP文件夹错误,但是使用CMD窗口键入命令正常连接。
通过查看日志文件发现,这两种连接方式有区别
通过CMD窗口输入命令连接ftp服务器采用主动模式,而window资源管理器连接ftp服务器默认采用被动模式,而防火墙没有配置或启用被动模式的高位端口的入站规则,所以导致数据传输通道建立失败。
扩展
ftp服务器的主动模式与被动模式
主动模式:
客户端通过21端口连接服务器,发送PORT命令将自身ip与特定端口告知服务器,服务器主动通过20端口与客户端特定端口建立数据通道进行数据传输。
被动模式:
客户端向通过21端口连接服务器,发送PASV命令采用被动模式,服务器随机返回高位端口(1024-65535)进行监听,客户端主动与服务器高位端口建立数据通道进行数据传输。
2、手工配置防火墙时只需要添加入站规则,不需要添加出站规则的嘛?
防火墙入站规则严格控制,默认阻止所有入站流量,而出站规则宽松,默认允许所有出站流量,与允许通过入站流量相反,配置出站规则是为了阻止数据传出,例如防止恶意软件外传数据、限制访问某些不信任的危险网站等
3、ftp站点的文件夹目录安全属性不配置 ftp_user用户权限会怎样?配置的权限分别有什么作用?
默认情况下,通过计算机管理界面创建的新用户,隶属用户组为Users,如果配置的ftp根目录的安全属性列表没有配置的新用户访问对象,则按照Users用户组的权限去执行(Users用户组默认没有写入权限),但是如果安全属性列表里访问对象有Authenticated Users经过身份验证的用户组(默认有写入权限),ftp服务器有配置身份验证,经过身份验证的用户可以按照Authenticated Users用户组的访问控制权限去操作ftp根目录文件内容。不同文件路径下新建文件的安全属性-可访问对象用户组可能不同:
配置ftp站点目录可访问对象(用户和用户组)的可操作权限,最常用的就是读取、写入权限,拥有读取权限可查看ftp根目录(站点目录)的文件内容和下载文件,而拥有写入权限则可以上传文件。
五、总结
FTP服务器搭建其实很简单的,通过反复测试,其实是VMware虚拟机网络配置的问题,我虚拟机采用的NAT模式,由于都是宿主机与虚拟机测试不涉及外网设备也不需要开启端口转发功能。之前一直卡在防火墙配置那块,手动配置入站规则能正常连接访问,自动配置的入站规则启用后,老是连接不上,后面把VM虚拟网络编辑器打开重置了下网络配置,重启虚拟机后又能正常访问(⊙﹏⊙) 当所有配置都没有问题的时候,然后一直出现连接ftp服务器超时的时候,大家可以考虑下重置一下虚拟机的网络。还有就是站点权限编辑的问题,如果文件安全属性有Authenticated Users,那新建的用户可以不配读取写入权限,没有这个用户组的话,USERS组默认也有读取权限,就是没有写入权限,上传不了文件,对用户及用户组权限感兴趣的可以去研究一下windows各类用户组具体的作用及应用场景。
相关文章:
Windows功能之FTP服务器搭建
一、创作背景 之前有用linux系统搭建过ftp服务器,最近想着用windows系统也顺便搭建一个,看网上有第三方服务软件一键部署,记得windows可以不借助第三方软件就可以搭建,就想顺便操作试试,结果老是连接不上,费…...
linux系统命令——权限
一、有哪些权限 读(r)——对应数字4 写(w)——对应数字2 执行(x)——对应数字1 二、权限及数字的对应 4对应r-- 2对应-w- 1对应--x 5对应r-x 6对应rw- 7对应rwx 三、文件的基本属性 如图&#…...
DeepSeek本地部署 (Windows+Ollama+Docker Desktop+ RAGFlow)
适用场景: 1、商城的小机器人自动根据实际情况回复 2、需要7*24小时运行在线回复,如:在线购物、在线咨询、在线招生等 3、无人值守环境 2025年1月,DeepSeek 正式发布 DeepSeek-R1 推理大模型,DeepSeek-R1 成本价格低…...
H3C无线控制器二层注册典型配置举例
介绍AP与AC间通过二层网络完成注册的配置举例 组网需求 如图所示,集中式转发架构下,AC旁挂在L2 switch1上,L3 switch做DHCP server为AP、Client和Host分配IP地址。需要实现无线客户端Client通过AP连接到AC上,并能与有线客户端Hos…...
前端面试笔试
前端面试笔试 1 相对路径和绝对路径的区别 区别:他们描述文件或目录位置的方式不同 绝对路径:绝对路径是指从系统的根目录开始的完整路径,无论当前工作目录在哪个位置,绝对路径始终指向文件或目录的确切位置。绝对路径适用…...
java的split分隔,使用regex
split(String regex) 是 Java 中 String 类的一个方法,用于根据正则表达式(regex)将字符串分割为子字符串数组。以下是一些常用的正则表达式及其用途: 按空格分割 正则表达式:“\s” 作用:匹配一个或多个…...
写时拷贝技术
目录 写时拷贝 核心思想 基本原理 基本过程 一个例子深入理解 补充知识--引用计数 小总结 写时拷贝实现 宏观理解(进程、线程角度) 资源共享 只读访问 写操作触发拷贝 独立修改 微观理解(fork系统调用角度) 进程创…...
HarmonyOS NEXT开发进阶(十二):build-profile.json5 文件解析
文章目录 一、前言二、Hvigor脚本文件三、任务与任务依赖图四、多模块管理4.1 静态配置模块 五、分模块编译六、配置多目标产物七、配置APP多目标构建产物八、定义 product 中包含的 target九、拓展阅读 一、前言 编译构建工具DevEco Hvigor(以下简称Hvigor&#x…...
ubuntu系统下添加pycharm到快捷启动栏方法
一、背景 之前在ubuntu系统下使用pycharm时,总是要进入/home/dlut/pycharm-community-2022.1/bin文件夹下,然后终端执行命令下面的命令才可修改代码: ./pycharm.sh为了以后方便,这里给出添加pycharm到快捷启动栏的方法 二、添加…...
简述计算机网络中的七层模型和四层模型
在计算机网络中,网络协议栈的设计通常采用分层结构来处理不同的通信任务。常见的分层结构有OSI七层模型和TCP/IP四层模型。虽然它们的层次数量不同,但本质上都在解决如何有效地进行计算机间通信。本文将分别介绍这两种结构的功能和各层的协议。 一、OSI七…...
golang开发支持onlyoffice的token功能
一直都没去弄token这块,想着反正docker run的时候将jwt置为false即可。 看了好多文章,感觉可以试试,但是所有文件几乎都没说思路。 根据我的理解和成功的调试,思路是: 我们先定义2个概念,一个是文档下载…...
【Linux】:封装线程
朋友们、伙计们,我们又见面了,本期来给大家带来封装线程相关的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结…...
OpenCV多分辨率模板匹配与容错优化实战指南
第一章:问题背景与挑战 1.1 传统模板匹配的局限性 模板匹配(Template Matching)是计算机视觉中基础且广泛使用的技术,其核心思想是通过滑动窗口在目标图像中寻找与模板最相似的位置。然而,传统方法(如Ope…...
「为爱发电」的硬核打开方式,涂鸦智能用AIoT引领智慧能源变革
全球能源危机与气候变化的双重压力下,人类正面临着一场前所未有的考验。据国际能源署预测,到2050年,若要实现碳中和目标,清洁能源需贡献全球电力结构的90%以上。在这场关乎人类未来的能源革命中,不仅需要技术创新&…...
uniapp-x 子组件样式覆盖
不支持scoped 默认不支持scoped,所以写也没用 那如果我想修改子孙节点的样式是不是很方便,不需要v-deep了? 的确如此 自带页面样式隔离 在 uni-app x 中,不支持 css scoped,样式的作用范围遵循以下规则:…...
word处理控件Aspose.Words教程:使用 Python 删除 Word 中的空白页
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理,并…...
MIDI,AI 3D场景生成技术
MIDI(Multi-Instance Diffusion for Single Image to 3D Scene Generation)是先进的3D场景生成技术,能在短时间内将单张图像转化为高保真度的3D场景。通过智能分割输入图像,识别出场景中的独立元素,再基于多实例扩散模…...
ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
note 问题背景:序列推荐(SR)任务旨在预测用户可能的下一个交互项目。近年来,大型语言模型(LLMs)在SR系统中表现出色,但它们巨大的规模使得在实际平台中应用变得低效和不切实际。 研究动机&…...
走路碎步营养补充贴士
走路碎步,这种步伐不稳的现象,在日常生活中并不罕见,特别是对于一些老年人或身体较为虚弱的人来说,更是一种常见的行走状态。然而,这种现象可能不仅仅是肌肉或骨骼的问题,它还可能是身体在向我们发出营养缺…...
【bug日记】 编译错误
在我使用vscode的时候,我想用一个头文件和两个cpp文件,头文件是用来声明一个类的,一个cpp是用来类的成员函数,一个cpp是主函数 但是我写完编译发现会弹出找不到这个类成员函数这个cpp文件,爆出这样的错误 提示我找不到…...
计算机视觉cv2入门之边缘检测
检测原理 边缘检测是指检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的变化,因此可以将这些像素点作为一个集合,用于标注图像中不同物体的边界。 边缘是图像上灰度级变化很快的点的集合。这些点的梯度往往很大。因此我们可以使用一阶导数和二…...
python脚本实现服务器内存和cpu使用监控,并记录日志,可以设置阈值和采样频率
Python 脚本,实现以下功能: 按日期自动生成日志文件(例如 cpu_mem_20231001.csv)当 CPU 或内存超过阈值时触发记录独立记录报警事件(保存到 alert.log)支持自定义阈值和监控间隔 脚本代码 import psutil …...
解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题
问题背景 今天在做 电脑串流ipad pro 的时候发现了2个问题: 1.ipadpro 接上鼠标后,滚轮上下反转,这个是苹果自己的模拟造成的问题,在设置里选择“触控板与鼠标”。 关闭“自然滚动”,就可以让鼠标滚轮正向滚动。 2. ipadpro 分…...
星越L_三角指示牌及危险警示灯使用
目录 1.打开危险警告灯 2.取出反光背心穿上 3.取出指示牌 4.放置三角指示牌。 1.打开危险警示灯 2.取出反光背心穿上 3.取出指示牌...
使用WireShark解密https流量
概述 https协议是在http协议的基础上,使用TLS协议对http数据进行了加密,使得网络通信更加安全。一般情况下,使用WireShark抓取的https流量,数据都是加密的,无法直接查看。但是可以通过以下两种方法,解密抓…...
MySQL复习(检查本地MySQL是否安装、DataGrip数据库可视化工具使用、增删改查基础语法、唯一索引、SQL简单函数)
目录 一、快速检查本地MySQL是否安装。(详细教程) (1)MySQL本地系统环境变量配置。(简单说明) (2)cmd命令行——判断MySQL是否安装成功! 二、DataGrip数据库操作可视化工具。 (1)基本介绍。 &am…...
数学建模 第一节
目录 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型,然后再以编程的形式输出出来 算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是…...
《Python实战进阶》No24: PyAutoGUI 实现桌面自动化
No24: PyAutoGUI 实现桌面自动化 摘要 PyAutoGUI 是一个跨平台的桌面自动化工具,能够模拟鼠标点击、键盘输入、屏幕截图与图像识别,适用于重复性桌面任务(如表单填写、游戏操作、批量文件处理)。本集通过代码截图输出日志的实战形…...
实验篇| CentOS 7 下 Keepalived + Nginx 实现双机高可用
为什么要做双机高可用? 想象一下:你的网站突然宕机,用户无法访问,订单流失、口碑暴跌…💸 双机热备就是解决这个痛点的终极方案!两台服务器互为备份,724小时无缝切换,保障业务…...
音视频入门基础:RTP专题(19)——FFmpeg源码中,获取RTP的音频信息的实现(下)
本文接着《音视频入门基础:RTP专题(18)——FFmpeg源码中,获取RTP的音频信息的实现(上)》,继续讲解FFmpeg获取SDP描述的RTP流的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四…...
JAVA面试_进阶部分_dubbo负载均衡策略
前言:zookeeper作为dubbo的注册中心,有一个很重要的点,我们的程序是分布式应用,服务部署在几个节点(服务器)上,当消费者调用服务时,zk返回给dubbo的是一个节点列表,但是d…...
《我的Python觉醒之路》之转型Python(十三)——控制流
#今天风景不错,明天继续学习 请关注我之前的笔记啊...
QT6.8.2在线安装记录
命令行带安装源启动,但仍不能连接到服务器,开着VPN才通过 .\qt-online-installer-windows-x64-4.8.1.exe --mirror https://mirrors.ustc.edu.cn/qtproject 开始安装前断开VPN,其实启动安装器时的镜像源修改参数是起作用的,因为下…...
70.HarmonyOS NEXT PicturePreview组件深度剖析:从架构设计到核心代码实现
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT PicturePreview组件深度剖析:从架构设计到核心代码实现 文章目录 HarmonyOS NEXT PicturePreview组件深度剖析…...
如何从受 Cloudflare 保护的网站提取数据:技术与挑战
引言 Web抓取是数据科学和市场研究的重要工具,但当面对受Cloudflare等先进保护系统守护的网站时,这项任务变得异常具有挑战性。Cloudflare的机器人检测系统需要精心设计的网页抓取解决方案才能成功提取数据。本文将介绍Cloudflare的防护机制以及如何使用…...
【DeepSeek应用】DeepSeek模型本地化部署方案及Python实现
DeepSeek实在是太火了,虽然经过扩容和调整,但反应依旧不稳定,甚至小圆圈转半天最后却提示“服务器繁忙,请稍后再试。” 故此,本文通过讲解在本地部署 DeepSeek并配合python代码实现,让你零成本搭建自己的AI助理,无惧任务提交失败的压力。 一、环境准备 1. 安装依赖库 …...
WPF程序使用AutoUpdate实现自动更新
AutoUpdate.NET使用 一、AutoUpdater.NET 简介 AutoUpdater.NET 是一个开源库,支持从各种源(如GitHub、FTP、HTTP服务器等)下载并安装更新。它提供了灵活的配置选项,允许开发者根据需求定制更新检查逻辑和用户体验。 二、安装 …...
A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分
3、微调(上一部分内容) 4、LLMs的对齐 大型语言模型(LLMs)中的对齐涉及引导模型输出以符合人类预期和偏好,特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式: 带有反馈的人工…...
【2025】Electron Git Desktop 实战一(上)(架构及首页设计开发)
源代码仓库: Github仓库【electron_git】 Commit : bb40040 Github Desktop 页面分析 本节目标: 1、实现类似Github Desktop的「空仓库」提示页 2、添加本地仓库逻辑编写从 Github Desktop 我们看到 他的 主要页面分为三个区域 Head头部区域…...
996引擎-问题处理:缺失特效分割文件 ModelAtlasSplitConfigs
通常我们买的资源都是带会 ModelAtlasSplitConfigs.txt 或 sceneAtlasSplitConfigs.txt 的 但有时确实找不到的话,是可以用996工具生成的:...
2024年12月CCF-GESP编程能力等级认证C++编程三级真题解析
三级真题的难度: CCF-GESP编程能力等级认证的C++三级真题难度通常被认为是中等水平,适合具备一定编程基础的考生。以下是关于三级真题难度的一些具体信息: 1. 考试内容 C++三级考试主要涵盖以下几个方面的知识: 基本语法:包括数据类型、变量、运算符等基础知…...
Java面试八股—Redis篇
一、Redis的使用场景 (一)缓存 1.Redis使用场景缓存 场景:缓存热点数据(如用户信息、商品详情),减少数据库访问压力,提升响应速度。 2.缓存穿透 正常的访问是:根据ID查询文章&…...
机器人ROS学习:Ubuntu22.04安装ROS2和Moveit2实现运动规划
通过本篇文章学习,你可以收获以下内容: 学会在 Ubuntu22.04 上安装 Moveit2学会下载编译运行 Moveit2 样例程序学会使用样例程序进行运动规划等 版本平台 系统版本:ubuntu22.04ROS2 版本:humbleMoveit 版本:moveit2…...
树结构和数组之间的转化
1、树结构转为数组 treeToArray(treeData, returnValue []) { let newValue [...returnValue] treeData.map(item > { if (item.children) { const { children, ...treeObj } { ...item } newValue.push(treeObj) newValue this.treeToArray(children, newValue) } else…...
2024华东师范大学计算机复试上机真题
2024华东师范大学计算机复试机试真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2024华东师范大学计算机复试上机真题 2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 在线评测:传动门:pgcode…...
Blender-MCP服务源码3-插件开发
Blender-MCP服务源码3-插件开发 Blender-MCP服务源码解读-如何进行Blender插件开发 1-核心知识点 1)使用Blender开发框架学习如何进行Blender调试2)学习目标1-移除所有的Blender业务-了解如何MCP到底做了什么?3)学习目标2-模拟MC…...
C++复试笔记(三)
1.友元函数和友元类 1.1友元函数 友元函数的经典实例是重载 "<<" 和 ">>" ,去重载operator<<,然后发现没办法将operator<<重载成成员函数。因为cout的 输出流对象和隐含的this指针在抢占第一个参数的位置。this指针默…...
【数学基础】概率与统计#1概率论与信息论初步
本系列内容介绍: 主要参考资料: 《深度学习》[美]伊恩古德菲洛 等 著 《机器人数学基础》吴福朝 张铃 著 文章为自学笔记,默认读者有一定的大学数学基础,仅供参考。 目录 随机变量概率分布离散型随机变量和概率质量函数连续型变量…...
掌握这些 UI 交互设计原则,提升产品易用性
在当今数字化时代,用户对于产品的体验要求越来越高,UI 交互设计成为决定产品成败的关键因素之一。一个易用的产品能够让用户轻松、高效地完成各种操作,而实现这一目标的核心在于遵循一系列科学合理的 UI 交互设计原则。本文将详细阐述简洁性、…...
工程化与框架系列(32)--前端测试实践指南
前端测试实践指南 🧪 引言 前端测试是保证应用质量的重要环节。本文将深入探讨前端测试的各个方面,包括单元测试、集成测试、端到端测试等,并提供实用的测试工具和最佳实践。 测试概述 前端测试主要包括以下类型: 单元测试&a…...