Ubuntu 上安装 FTP 服务、开放指定端口并创建用户

一、安装 FTP 服务(vsftpd)

sudo apt update
sudo apt install vsftpd -y

二、修改 vsftpd 配置,使用 21000 端口

编辑配置文件:

sudo nano /etc/vsftpd.conf

修改或添加以下配置:

使用以下配置文件需要修改的地方:listen_port=21000      			    # 替换为自己的ftp端口
pasv_min_port=20009        		    # 被动模式使用的端口范围(最小端口)
pasv_max_port=20009		 			# 被动模式使用的端口范围(最大端口)
local_root=/usr/local/nginx/html    # 本地用户的根目录路径 (连接建立后默认目录)
# 是否以独立模式运行?vsftpd 可以从 inetd 启动,也可以作为独立守护进程从初始化脚本启动。
listen=YES# 此指令启用 IPv6 套接字监听。默认情况下,监听 IPv6 "any" 地址 (::) 将接受 IPv6 和 IPv4 客户端的连接。
# 不需要同时监听 IPv4 和 IPv6 套接字。如果需要(例如监听特定地址),则必须运行两个 vsftpd 实例,并使用两个配置文件。
#listen_ipv6=YES# 指定 FTP 服务监听的端口号
listen_port=21000# 启用被动模式
pasv_enable=YES
# 被动模式使用的端口范围(最小端口)
pasv_min_port=20009
# 被动模式使用的端口范围(最大端口)
pasv_max_port=20009# 是否允许匿名 FTP?(默认禁用)
anonymous_enable=NO# 是否允许本地用户登录
local_enable=YES# 是否启用任何形式的 FTP 写入命令
write_enable=YES# 本地用户的默认 umask 是 077。可以改为 022(大多数其他 FTP 服务使用 022)
#local_umask=022# 是否允许匿名用户上传文件?仅在全局写入启用时有效。还需要创建一个 FTP 用户可写的目录。
#anon_upload_enable=YES# 是否允许匿名用户创建新目录?
#anon_mkdir_write_enable=YES# 是否启用目录消息 - 远程用户进入特定目录时显示的消息
dirmessage_enable=YES# 是否使用本地时区显示目录列表时间?默认显示 GMT 时间。MDTM FTP 命令返回的时间也受此选项影响。
use_localtime=YES# 是否启用上传/下载日志记录
xferlog_enable=YES# 确保 PORT 传输连接从端口 20(ftp-data)发起
connect_from_port_20=YES# 是否将匿名用户上传的文件所有者更改为其他用户?不建议使用 "root"!
#chown_uploads=YES
#chown_username=whoever# 可以自定义日志文件路径,默认如下
#xferlog_file=/var/log/vsftpd.log# 是否使用标准 ftpd xferlog 格式记录日志?默认日志位置为 /var/log/xferlog
#xferlog_std_format=YES# 可以更改空闲会话的超时时间(秒)
#idle_session_timeout=600# 可以更改数据连接的超时时间(秒)
#data_connection_timeout=120# 建议在系统中定义一个唯一用户,FTP 服务可以将其用作完全隔离且无特权的用户
#nopriv_user=ftpsecure# 是否启用异步 ABOR 请求识别?不建议启用(代码复杂),但禁用可能会使旧版 FTP 客户端困惑
#async_abor_enable=YES# 默认情况下,服务器假装允许 ASCII 模式但实际忽略请求。启用以下选项可真正支持 ASCII 模式(不推荐,可能存在安全风险)
#ascii_upload_enable=YES
#ascii_download_enable=YES# 可以自定义登录欢迎信息
#ftpd_banner=Welcome to blah FTP service.# 可以指定禁止的匿名电子邮件地址文件,用于防止某些 DoS 攻击
#deny_email_enable=YES
# (默认如下)
#banned_email_file=/etc/vsftpd.banned_emails# 是否将本地用户限制在其主目录中?使用前请参阅 FAQ 了解风险
# chroot_local_user=YES# 允许 chroot 目录可写(需谨慎)
allow_writeable_chroot=YES# 是否将本地用户 chroot() 到其主目录?如果启用,以下列表将成为不 chroot 的用户列表
# (警告:chroot 可能非常危险。使用时确保用户对 chroot 的顶级目录没有写权限)
chroot_local_user=YES
# 本地用户的根目录路径
local_root=/usr/local/nginx/html
# 是否启用 chroot 用户列表?
#chroot_list_enable=YES
# (默认如下)
#chroot_list_file=/etc/vsftpd.chroot_list# 是否启用内置 ls 的 "-R" 选项?默认禁用以避免远程用户在大站点上引发过多 I/O
# 但某些 FTP 客户端(如 "ncftp" 和 "mirror")需要此选项
#ls_recurse_enable=YES# 自定义设置
#
# 某些 vsftpd 设置默认不匹配文件系统布局# 此选项应为一个空目录名,且 FTP 用户不可写。此目录用作安全 chroot() 隔离区
secure_chroot_dir=/var/run/vsftpd/empty# 指定 vsftpd 使用的 PAM 服务名称
pam_service_name=vsftpd# 指定用于 SSL 加密连接的 RSA 证书位置
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# 是否启用 SSL?
ssl_enable=NO# 是否启用 UTF-8 文件系统支持?
#utf8_filesystem=YES

三、创建用户 ftpuser 并设置密码


sudo adduser ftpuser
# 当提示输入密码时,输入密码Enter new UNIX password:        ← 输入密码
Retype new UNIX password:       ← 再输一遍密码Full Name []:                   ← 直接按 Enter
Room Number []:                 ← 直接按 Enter
Work Phone []:                  ← 直接按 Enter
Home Phone []:                  ← 直接按 Enter
Other []:                       ← 直接按 Enter
Is the information correct? [Y/n] ← 输入 Y 然后回车

用户目录默认是 /home/ftpuser,vsftpd 会将其作为根目录。


四、设置用户目录权限

如果需要上传文件,则需要确保 ftpuser 拥有写权限:

# 如果说我们只允许操作Nginx的/html目录, 对应着 /etc/vsftpd.conf 中的local_root配置
sudo chown -R ftpuser:ftpuser /usr/local/nginx/html

五、开放防火墙端口(21000 及被动模式端口)

如果使用的是 ufw(Ubuntu 默认防火墙),执行:

如果是阿里云等服务器需要在安全组中开放对应端口

# ftp监听端口
sudo ufw allow 21000/tcp
# 被动模式中启用范围端口, 这里使用的是20009
sudo ufw allow 20009:20009/tcp
sudo ufw reload

六、重启 vsftpd 服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

七、测试 FTP

可以通过 FileZilla 或命令行工具连接:

  • 主机:你的服务器IP
  • 端口:21000
  • 用户名:ftpuser
  • 密码:你的密码

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

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

相关文章

用自写的jQuery库+Ajax实现了省市联动

1. 省市联动:在网页上,选择对应的省份之后,动态的关联出该省份对应的市。选择对应的市之后,动态地关联出城市对应的区。 2. 设计数据库表 t_area (区域表) id(PK-自增) code name pcode ------------…

【行为型之迭代器模式】游戏开发实战——Unity高效集合遍历与场景管理的架构精髓

文章目录 🔄 迭代器模式(Iterator Pattern)深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码(背包系统遍历)1. 定义迭代器与聚合接口2. 实现具体聚合类(背包物品集合)3. 实现具…

18前端项目----Vue项目收尾优化|重要知识

收尾/知识点汇总 项目收尾二级路由未登录全局路由守卫路由独享守卫图片懒加载路由懒加载打包上线 重要知识点汇总组件通信方式1. props2. 自定义事件3. 全局事件总线4. 订阅与发布pubsub5. Vuex6. 插槽 sync修饰符attrs和listeners属性children和parent属性mixin混入作用域插槽…

【Linux】基础指令(Ⅱ)

目录 1. mv指令 2. cat指令 3.echo指令 补:输出重定向 4. more指令 5. less指令 6. head指令和tail指令 7.date指令 时间戳: 8. cal指令 9. alias指令 10.grep指令 1. mv指令 语法:mv [选项]... 源文件/目录 目标文件/目录 …

docker及docker-compose安装及使用

docker compose 🔗官网地址 一、为什么要使用docker compose 1. 简化管理 • 通过一个 YAML 文件定义和管理多容器应用。 • 简化服务间的编排与协调,方便环境的管理与复制。 2. 提升协作效率 • 配置文件易于共享,便于开发、运维等团队协…

JVM学习专题(二)内存模型深度剖析

目录 1.JVM结构体系 ​编辑 2.跨平台特性 3.JVM整体结构及内存模型 1.栈内存 1、栈帧: 1.局部变量表 2.操作数栈 3.动态链接 4.方法出口 2、创建对象 2.程序计数器: 3.方法区 ​4.堆 5.本地方法区 6.总结 1.JVM结构体系 JDK、JRE 和 JVM…

Flink之Table API

Apache Flink 的 Table API 是 Flink 提供的一种高级抽象,用于以声明式方式处理批处理和流处理数据。它是基于关系模型的 API,用户可以像编写 SQL 一样,以简洁、类型安全的方式编写数据处理逻辑。 一、基本概念 1. 什么是 Table API&#xf…

基于Vue3.0的高德地图api教程005:实现绘制线并编辑功能

文章目录 6、绘制多段线6.1 绘制多段线6.1.1 开启绘制功能6.1.2 双击完成绘制6.1.3 保存到数据库6.2 修改多段线6.2.1 点击线,进入编辑模式6.2.2 编辑线6.3 完整代码6、绘制多段线 6.1 绘制多段线 6.1.1 开启绘制功能 实现代码: const changeSwitchDrawPolyline = ()=>…

“redis 目标计算机积极拒绝,无法连接” 解决方法,每次开机启动redis

如果遇到以上问题 先打开“服务” 找到App Readiness 右击-启动 以管理员身份运行cmd,跳转到 安装redis的目录 运行:redis-server.exe redis.windows.conf 以管理员身份打开另一cmd窗口,跳转到安装redis的目录 运行:redis-…

Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新

面对城市停车资源错配导致的30%以上交通拥堵问题&#xff0c;本文以某新一线城市智慧交通项目为蓝本&#xff0c;深度解析Java大数据技术如何实现多源停车数据融合、动态路径规划与诱导策略优化。通过构建“感知-计算-决策”全链路系统&#xff0c;实现车位状态更新延迟<200…

牛客周赛 Round 92(再现京津冀蓝桥杯???)

1. 小红的签到题 现在小红希望你写出一个长度为 nnn 的、使用了下划线命名法命名的变量。为了显出特征&#xff0c;请保证该变量至少由两个单词组成。 输入描述: 输入一个正整数 n(3≦n≦100)&#xff0c;代表需要构造的变量长度。 输出描述: 输出一个长度为 n 的字符串&#x…

2025-05-11 Unity 网络基础11——UnityWebRequest

文章目录 1 UnityWebRequest 介绍2 搭建 HTTP 服务器3 常用操作3.1下载资源3.1.1 下载文本3.1.2 下载图片3.1.3 下载 AB 包 3.2 上传资源3.2.1 上传数据类3.2.2 POST 上传3.3.3 PUT 上传 4 自定义操作4.1 下载资源4.1.1 Unity 内置 Handler4.1.2 自定义 Handler 4.2 上传资源4.…

GitHub 趋势日报 (2025年05月09日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1voideditor/void⭐ 1879⭐ 15214TypeScript2ruanyf/weekly科技爱好者周刊&…

.NET MAUI 基础知识

文章目录 什么是 .NET MAUI&#xff1f;MAUI的核心特点与Xamarin.Forms的区别 开发环境搭建安装Visual Studio 2022安装必要组件配置Android开发环境配置iOS开发环境验证安装 创建第一个MAUI应用创建新项目MAUI项目结构解析理解关键文件运行应用程序简单修改示例使用热重载 MAU…

卷积神经网络全连接层详解:特征汇总、FCN替代与性能影响分析

【内容摘要】 本文聚焦卷积神经网络&#xff08;CNN&#xff09;的全连接层&#xff0c;详细介绍其将二维特征图转化为一维向量的过程&#xff0c;阐述全卷积网络&#xff08;FCN&#xff09;如何通过转置卷积替代全连接层以实现像素级分类&#xff0c;并分析全连接层对图像分类…

在C++中进行套接字编程时,主要使用以下头文件

目录 一.基本套接字头文件<sys/socket.h><netinet/in.h><arpa/inet.h><unistd.h><netdb.h> 二. 完整示例头文件包含三. 注意事项 在C中进行套接字编程时&#xff0c;主要使用以下头文件&#xff1a; 一.基本套接字头文件 <sys/socket.h>…

【Linux网络】HTTP

应用层协议 HTTP 前置知识 我们上网的所有行为都是在做IO&#xff0c;&#xff08;我的数据给别人&#xff0c;别人的数据给我&#xff09;图片。视频&#xff0c;音频&#xff0c;文本等等&#xff0c;都是资源答复前需要先确认我要的资源在哪台服务器上&#xff08;网络IP&…

JAVA异常体系

在 Java 里&#xff0c;异常体系是其错误处理机制的核心内容&#xff0c;它能够帮助开发者有效应对程序运行时出现的各种意外状况。 异常体系的基本架构 它主要包含两个重要分支&#xff1a; Error&#xff08;错误&#xff09;&#xff1a;这类异常是程序自身无法处理的严重…

vue 去掉右边table的下拉条与下面的白色边框并补充满

::v-deep table {width: 100% !important; } ::v-deep .el-table::after, .el-table::before {display: none !important; }/* 隐藏滚动条但保留滚动功能 */ ::v-deep .el-table__body-wrapper::-webkit-scrollbar {width: 0 !important;height: 0 !important; }::v-deep .el-t…

uniapp+vue3+uview来开发我们的项目

前言&#xff1a; 就像我们vue的web的框架element、iview等一样&#xff0c;我们的uni-app开发也有适合的他的框架&#xff0c;除了他本身的扩展组件以外&#xff0c;第三方好用的就是就是uview了。 实现效果&#xff1a; 官网信息&#xff1a; vue2版本&#xff1a;uview-ui …