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可以不借助第三方软件就可以搭建,就想顺便操作试试,结果老是连接不上,费…...
leetcode hot100普通动态规划/基础DP
1️⃣1️⃣ 普通动态规划(基础 DP) 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 题解: 动态规划Dynamic Programming ,在观察动态中找到如何规划解题的步骤…...
基于Python的天气预报数据可视化分析系统-Flask+html
开发语言:Python框架:flaskPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统登录 可视化界面 天气地图 天气分析 历史天气 用户管理 摘要 本文介绍了基于大数据…...
【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)
00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code插件05. 附录 01. Visual Studio Code概述 vscode是一种简化且高效的代码编辑器,同时支持诸如调试,任务执行和版本管…...
git报错:“fatal:refusing to merge unrelated histories“
新建仓库,克隆本地项目到新仓库,首次同步本地已提交的代码到远程时,报错:"fatal:refusing to merge unrelated histories" 。 报错意思是:致命的:拒绝合并无关的历史。 一、问题背景ÿ…...
前端面试笔试
前端面试笔试 1 相对路径和绝对路径的区别 区别:他们描述文件或目录位置的方式不同 绝对路径:绝对路径是指从系统的根目录开始的完整路径,无论当前工作目录在哪个位置,绝对路径始终指向文件或目录的确切位置。绝对路径适用…...
目前人工智能的发展,判断10年、20年后的人工智能发展的主要方向,或者带动的主要产业
根据2025年的最新行业研究和技术演进趋势,结合历史发展轨迹,未来10-20年人工智能发展的主要方向及带动的产业将呈现以下六大核心趋势: 一、算力革命与底层架构优化 核心地位:算力将成为类似“新能源电池”的基础设施,…...
Redis基本命令手册——五大类型
目录 一:基本操作 二:字符串(String) 三:哈希(Hash) 四:列表(List) 五:集合(Set) 六:有序集合(Zset&…...
历年华中科技大学计算机考研复试上机真题
历年华中科技大学计算机考研复试上机真题 2022华中科技大学计算机考研复试上机真题 2021华中科技大学计算机考研复试上机真题 2019华中科技大学计算机考研复试上机真题 在线评测:https://pgcode.cn 八进制 题目描述 输入一个整数,将其转换成八进制数…...
Python----数据分析(Pandas二:一维数组Series,Series的创建,Series的属性,Series中元素的索引与访问)
一、一维数组Series Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。 仅由一组数据也可产生简单的 Series 对象,用值列表生成 Series …...
java数据结构(复杂度)
一.时间复杂度和空间复杂度 1.时间复杂度 衡量一个程序好坏的标准,除了能处理各种异常,还有就是时间效率,当然,对于一些配置好的电脑数据处理起来就是比配置低的高,但从后期发展来看,当数据量足够庞大时&…...
windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC
大家好,我是国货系创始人张云泽,最近不少小伙伴在后台问:“听说Windows协议要到期了?我的电脑会不会变砖?”还有人说:“华为笔记本以后用不了Windows了?鸿蒙系统能用吗?”今天咱们就…...
HTML+CSS基础(了解水平)
html 的介绍 学习目标 能够知道html的作用 1. html的定义 2. html的定义 HTML 的全称为:HyperText Mark-up Language, 指的是超文本标记语言。 标记:就是标签, <标签名称> </标签名称>, 比如: <html></html>、<h1><…...
[设计模式]1_设计模式概览
摘要:设计模式原则、设计模式的划分与简要概括,怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用,后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则(语言无关) 本质原理图 原…...
ClickHouse总体学习
文章目录 一、简介1、OLAP 与 OLTP 的对比2、列式储存的好处3、DBMS 的功能4、多样化引擎5、高吞吐写入能力6、数据分区与线程级并行 二、Explain 查看执行计划三、建表优化1、数据类型2、分区和索引3、表参数4、写入和删除优化 四、常见配置CPU资源内存资源存储 五、ClickHous…...
Elasticsearch集群与日志系统实战部署指南
一、环境规划与初始化配置 1. 服务器资源分配 IP地址部署服务主机名172.25.23.7ES Kafka Zookeeper Kibananode1172.25.23.8ES Kafka Zookeeper Filebeatnode2172.25.23.9Kafka Zookeeper Apache Logstashnode3 系统要求: 配置:4核CPU / 4G…...
SFT数据处理部分的思考
SFT数据及处理的业内共识 1.prompt的质量和多样性远重要于数据量级,微调一个 30 b 量级的base model只需要 10 w 量级的数据即可 参考:《LIMA:Less Is More for Alignment》 2.合成数据很重要!一般需要通过…...
netsh实现TCP端口转发
服务器:192.168.31.9 端口:56000 客户端:192.168.31.2 端口:5600 客户端(本地端口5600)通过TCP连接服务器的56000端口 PC:192.168.31.5,PC实现客户端和服务器之间56000端口转发 1. …...
数据分布偏移检测:保障模型在生产环境中的稳定性
数据分布偏移检测:保障模型在生产环境中的稳定性 引言 在机器学习系统从开发环境部署到生产环境的过程中,数据分布偏移问题是影响模型性能的主要挑战之一。当训练数据与生产环境中的数据分布不一致时,即使是经过精心调优的模型也可能表现出明显的性能下降。本文将深入探讨…...
leetcode 75.颜色分类(荷兰国旗问题)
题目描述 题目分析 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的,统计0、1、2的数量然后按顺序赋值,或者手写一个冒泡排序,whatever。 但是在这一题中我们主…...
在windows上通过idea搭建doris fe的开发环境(快速成功版)
一、前置环境准备 1. 准备Linux环境,我起的虚机,使用CentOS8,4核、12G,磁盘50G 1.1.备份yum源 # 系统下载连接:magnet:?xturn:btih:9DB46A612D04763AA7DB02A0FF63EDE2EA555867&dnCentOS-8.1.1911-x86_64-dvd1.…...
MyBatis源码分析の配置文件解析
文章目录 前言一、SqlSessionFactoryBuilder1.1、XMLConfigBuilder1.2、parse 二、mappers标签的解析2.1、cacheElement2.1.1、缓存策略 2.2、buildStatementFromContext2.2.1、sql的解析 前言 本篇主要介绍MyBatis源码中的配置文件解析部分。MyBatis是对于传统JDBC的封装&…...
python爬虫笔记(一)
文章目录 html基础标签和下划线无序列表和有序列表表格加边框 html的属性a标签(网站)target属性换行线和水平分割线 图片设置宽高width,height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…...
docker后台运行,便于后期用命令行进入它的终端
在 docker compose up --build -d 命令中,**-d(或 --detach)参数的作用是让容器以后台模式(detached mode)**运行。以下是详细解释: **-d 参数的作用** 后台运行容器: 默认情况下&a…...
剑指 Offer II 087. 复原 IP
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20087.%20%E5%A4%8D%E5%8E%9F%20IP/README.md 剑指 Offer II 087. 复原 IP 题目描述 给定一个只包含数字的字符串 s ,用以表示一个 IP 地址…...
DC-6靶机详解
一、主机发现 arp-scan -l靶机ip为192.168.55.159 二、端口扫描、目录枚举、指纹识别、 2.1端口扫描 nmap 192.168.55.159发现没有开放特殊端口 看来信息收集的重点要放在网页中了 2.2目录枚举 dirb http://192.168.55.1592.3指纹识别 nmap 192.168.55.159 -sV -sC -O …...
Java构造方法详解:从入门到实战
目录 一、什么是构造方法? 二、构造方法的作用 三、构造方法分类与使用 1. 默认构造方法 2. 有参构造方法 3. 构造方法重载 四、注意事项(避坑指南) 五、经典面试题解析 六、实战应用场景 七、总结 一、什么是构造方法? …...
STM32-SPI通信外设
目录 一:SPI外设简介 SPI框图编辑 SPI逻辑 编辑 主模式全双工连续传输 编辑 非连续传输 二:硬件SPI读写W25Q64 1.接线: 2. 代码 SPI外设的初始化 生成时序 一:SPI外设简介 STM32内部集成了硬件SPI收发电路&#…...
远程控制中的云电脑是什么意思?1分钟学会用
很多常用我们ToDesk远程控制的朋友们或许会注意到无论是在PC端还是移动端中都出现有【云电脑】【来云电脑爽玩-新用户免费1小时】这些词句等信息。那么这究竟是代表什么意思呐?云电脑是什么又怎么用呐?为什么要增加云电脑?以下小编就为大家科…...
【go】Go 语言中 errors.Is 和 errors.As 的区别
Go 语言中 errors.Is 和 errors.As 的区别 核心区别概述 errors.Is 和 errors.As 是 Go 1.13 引入的错误处理函数,它们有着不同的用途: errors.Is: 判断错误链中是否包含特定的错误值(错误相等性检查)errors.As: 尝试将错误转换…...
