Ubuntu22.04搭建FTP服务器保姆级教程
在网络环境中,文件传输是一项至关重要的任务。FTP(文件传输协议)是一种基于客户端/服务器模式的协议,广泛用于在互联网上传输文件。Ubuntu作为一款流行的Linux发行版,因其稳定性和易用性而广受开发者和系统管理员的喜爱。本文将详细介绍如何在Ubuntu22.04上搭建FTP服务器。
一、准备工作
-
更新系统:
确保你的Ubuntu系统是最新的。可以通过以下命令来更新系统:sudo apt update && sudo apt upgrade
-
检查21端口:
FTP默认使用21端口,因此在安装之前需要确保该端口没有被占用。可以使用以下命令检查:lsof -i:21
如果端口被占用,可以使用
kill -9 <进程号>
命令终止占用进程。
二、安装vsftpd
vsftpd(Very Secure FTP Daemon)是一个安全、快速的FTP服务器程序。通过以下命令安装:
sudo apt-get install vsftpd
三、配置vsftpd
vsftpd的主要配置文件位于/etc/vsftpd.conf
。安装完成后,需要对vsftpd进行配置。
-
备份配置文件:
在编辑之前,先备份原始配置文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
-
编辑配置文件:
使用你喜欢的文本编辑器打开配置文件,例如:sudo vim /etc/vsftpd.conf
-
常用配置选项:
- 禁止匿名登录:
anonymous_enable=NO
- 允许本地用户登录:
local_enable=YES
- 关闭监听IPv6(如果网络环境不支持IPv6):
listen_ipv6=NO listen=YES
- 允许对文件系统进行更改(例如上传和删除文件):
write_enable=YES
- 限制用户只能访问自己的主目录:
chroot_local_user=YES
- 禁止匿名登录:
四、启动vsftpd服务
配置完成后,可以通过以下命令启动vsftpd服务:
sudo systemctl start vsftpd
设置vsftpd服务开机自启动:
sudo systemctl enable vsftpd
检查服务状态:
sudo systemctl status vsftpd
如下图,服务处于运行状态:
五、防火墙设置
如果系统启用了UFW防火墙,需要允许FTP相关端口的通信:
sudo ufw allow 20:21/tcp
sudo ufw allow 50000:50010/tcp
sudo ufw enable
六、创建FTP用户
为了安全性考虑,最好为每个需要使用FTP服务的用户创建一个独立的账户。
-
创建用户主目录:
sudo mkdir /home/ftpuser
-
添加用户:
sudo useradd -d /home/ftpuser ftpuser
-
设置用户密码:
sudo passwd ftpuser
-
设置目录权限:
sudo chown -R ftpuser:ftpuser /home/ftpuser sudo chmod -R 755 /home/ftpuser
七、测试FTP连接
测试FTP服务器是否正常运行。
输入服务器IP地址、用户名和密码,尝试连接。
尝试上传或下载文件,这里不做演示。
八、常见问题及解决方案
-
FTP登录失败,提示“530 Login incorrect”:
检查/etc/vsftpd.conf
中的pam_service_name
是否设置为vsftpd
,如果不是,请修改为:pam_service_name=vsftpd
然后重启vsftpd服务:
sudo systemctl restart vsftpd
-
无法通过被动模式连接FTP服务器:
确保UFW防火墙已允许被动端口范围,并检查被动端口范围内是否有其他服务占用。可以使用netstat
命令查看:sudo netstat -tuln | grep ':[50000-50010]'
如果发现有冲突,可以调整
pasv_min_port
和pasv_max_port
的值,然后重启vsftpd服务。 -
设置匿名用户可以连接FTP服务器:
配置/etc/vsftpd.conf,添加以下:
anonymous_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_root=/var/ftp
通过以上步骤,你应该能够在Ubuntu上成功搭建并配置一个功能完备的FTP服务器。vsftpd作为一个安全且高效的FTP服务器软件,能够满足大多数文件传输和管理的需求。如果在配置过程中遇到任何问题,建议查阅官方文档或社区论坛以获取更多帮助。
相关文章:
Ubuntu22.04搭建FTP服务器保姆级教程
在网络环境中,文件传输是一项至关重要的任务。FTP(文件传输协议)是一种基于客户端/服务器模式的协议,广泛用于在互联网上传输文件。Ubuntu作为一款流行的Linux发行版,因其稳定性和易用性而广受开发者和系统管理员的喜爱…...
操作系统(4)操作系统的结构
一、无序结构(整体结构或模块组合结构) 1.特点: 以大型表格和队列为中心,操作系统的各部分程序围绕着这些表格进行。操作系统由许多标准的、可兼容的基本单位(称为模块)构成,模块之间通过规定的…...
Python数据分析(OpenCV视频处理)
处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下: import numpy as np import cv2 我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…...
跨域 Cookie 共享
跨域请求经常遇到需要携带 cookie 的场景,为了确保跨域请求能够携带用户的认证信息或其他状态,浏览器提供了 withCredentials 这个属性。 如何在 Axios 中使用 withCredentials 为了在跨域请求中携带 cookie,需要在 Axios 配置中设置 withCr…...
【视频异常检测】Real-Time Anomaly Detection and Localization in Crowded Scenes 论文阅读
文章信息: 发表于:CVPR2015(workshop) 原文链接:https://www.cv-foundation.org/openaccess/content_cvpr_workshops_2015/W04/papers/Sabokrou_Real-Time_Anomaly_Detection_2015_CVPR_paper.pdf Real-Time Anomaly D…...
设计模式12:抽象工厂模式
系列总链接:《大话设计模式》学习记录_net 大话设计-CSDN博客 参考: C设计模式:抽象工厂模式(风格切换案例)_c 抽象工厂-CSDN博客 1.概念 抽象工厂模式(Abstract Factory Pattern)是软件设计…...
论文学习——多种变化环境下基于多种群进化的动态约束多目标优化
论文题目:Multipopulation Evolution-Based Dynamic Constrained Multiobjective Optimization Under Diverse Changing Environments 多种变化环境下基于多种群进化的动态约束多目标优化(Qingda Chen , Member, IEEE, Jinliang Ding , Senior Member, …...
Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...
Cerebras 推出 CePO,填补推理与规划能力的关键空白
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
广东省食品销售中高级题库及答案
1.有关食品安全标准的说法正确的是(C)。 A.鼓励性标准 B.推荐性标准 C.强制性标准 D.引导性标准 2.食品经营许可证载明的许可事项发生变化的,食品经营者应当在变化后(D)个工作日内向原发证的食品药品监督管理部门申请变更经营许可。 A.3 B.5 C.7 D.10 3.食品销售经营者对食品…...
JAVA基础-深入理解Java内存模型(一)-- 重排序与先行发生原则(happens-before)
深入理解Java内存模型(一)-- 重排序 很棒的一个关于Java内存模型系列文章,首先感谢作者,转载自深入理解java内存模型系列文章 ,为了方便阅读,做了一些内容整合和重排版。 提纲 Java线程之间的通信对程序…...
【Lambda】java之lambda表达式stream流式编程操作集合
java之lambda表达式&stream流式编程操作集合 1 stream流概念1.1 中间操作1.1.1 无状态操作1.1.2 有状态操作 1.2 终端操作1.2.1 非短路操作1.2.2 短路操作 2 steam流的生成2.1 方式一:数组转为stream流2.2 方式二:集合转为steam流2.3 方式三…...
家具购物小程序+php
基于微信小程序的家具购物小程序的设计与实现 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的家具购物小程序的设计与实现的开发全过程。通过分析基于微信小程序的家具购物小程序的设计与实…...
【GIS教程】使用GDAL-Python将tif转为COG并在ArcGIS Js前端加载-附完整代码
目录 一、数据格式 二、COG特点 三、使用GDAL生成COG格式的数据 四、使用ArcGIS Maps SDK for JavaScript加载COG格式数据 一、数据格式 COG(Cloud optimized GeoTIFF)是一种GeoTiff格式的数据。托管在 HTTP 文件服务器上,可以代替geose…...
VB.net进行CAD二次开发(二)与cad交互
开发过程遇到了一个问题:自制窗口与控件与CAD的交互。 启动类,调用非模式窗口 Imports Autodesk.AutoCAD.Runtime Public Class Class1 //CAD启动界面 <CommandMethod("US")> Public Sub UiStart() Dim myfrom As Form1 New…...
【NLP 11、Adam优化器】
祝你先于春天, 翻过此间铮铮山峦 —— 24.12.8 一、Adam优化器的基本概念 定义 Adam(Adaptive Moment Estimation)是一种基于梯度的优化算法,用于更新神经网络等机器学习模型中的参数。它结合了动量法(Momentum&…...
51单片机应用开发(进阶)---串口接收字符命令
实现目标 1、巩固UART知识; 2、掌握串口接收字符数据; 3、具体实现目标:(1)上位机串口助手发送多字符命令,单片机接收命令作相应的处理(如:openled1 即打开LED1;closeled1 即关…...
redis 怎么样删除list
在 Redis 中,可以使用以下方法删除列表或列表中的元素: 1. 删除整个列表 使用 DEL 命令删除一个列表键: DEL mylist这个命令会删除键 mylist 及其值(无论 mylist 是一个列表还是其他类型的键)。 2. 删除列表中的部分…...
【数据结构——内排序】快速排序(头歌实践教学平台习题)【合集】
目录😋 任务描述 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现快速排序算法。 测试说明 平台会对你编写的代码进行测试: 测试输入示例: 10 6 8 7 9 0 1 3 2 4 5 (说明:第一行是元素个数&a…...
npm或yarn包配置地址源
三种方法 1.配置.npmrc 文件 在更目录新增.npmrc文件 然后写入需要访问的包的地址 2.直接yarn.lock文件里面修改地址 简单粗暴 3.yarn install 的时候添加参数 设置包的仓库地址 yarn config set registry https://registry.yarnpkg.com 安装:yarn install 注意…...
STUN服务器用于内网NAT的方案
在内网中部署 STUN 服务器的场景通常用于处理多层 NAT 或内网客户端之间的通信需求,尤其是在大企业或学校等复杂网络环境下。通过 STUN 服务器,可以帮助客户端设备检测和适配 NAT 转换规则,进而支持 WebRTC 或其他实时通信技术的正常运行。 …...
Linux 简单命令总结
1. 简单命令 1.1. ls 列出该目录下的所有子目录与文件,后面还可以跟上一些选项 常用选项: ・-a 列出目录下的所有文件,包括以。开头的隐含文件。 ・-d 将目录象文件一样显示,而不是显示其下的文件。如:ls -d 指定目…...
Vue.js组件开发:提升你的前端工程能力
Vue.js 是一个用于构建用户界面的渐进式框架,它允许开发者通过组件化的方式创建可复用且易于管理的代码。在 Vue.js 中开发组件是一个直观且高效的过程,下面我将概述如何创建和使用 Vue 组件,并提供一些最佳实践。 1. 创建基本组件 首先&am…...
使用 Pandas 读取 JSON 数据的五种常见结构解析
文章目录 引言JSON 数据的五种常见结构1. split 结构2. records 结构3. index 结构4. columns 结构5. values 结构 引言 在日常生活中,我们经常与各种数据打交道,无论是从网上购物的订单信息到社交媒体上的动态更新。JSON(JavaScript Object…...
C++鼠标轨迹算法(鼠标轨迹模拟真人移动)
一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…...
Go mysql驱动源码分析
文章目录 前言注册驱动连接器创建连接交互协议读写数据读数据写数据 mysqlConncontext超时控制 查询发送查询请求读取查询响应 Exec发送exec请求读取响应 预编译客户端预编译服务端预编译生成prepareStmt执行查询操作执行Exec操作 事务读取响应query响应exec响应 总结 前言 go…...
GNSS误差源及差分定位
GNSS误差源: (一)卫星星历误差 由星历信息所得出的卫星位置坐标与实际位置坐标的偏差就是星历误差。星历信息是由 GPS 地面部分测量计算后传入空间部分的。由于卫星在运动中要受到各种摄动力的作用, 而地面部分又很难精确测量这些作用力,…...
pg数据类型
1、数值类型: smallint 2 字节 小范围整数 -32768 到 32767 integer 4 字节 常用的整数 -2147483648 到 2147483647 bigint 8 字节 大范围整数 -9223372036854775808 到 9223372036854775807 decimal 可变长 用户指定的精度&#x…...
【java】finalize方法
目录 1. 说明2. 调用过程3. 注意事项 1. 说明 1.finalize方法是Java中Object类的一个方法。2.finalize方法用于在对象被垃圾回收之前执行一些清理工作。3.当JVM(Java虚拟机)确定一个对象不再被引用、即将被回收时,会调用该对象的finalize方法…...
HNU_多传感器(专选)_作业4(构建单层感知器实现分类)
1. (论述题)(共1题,100分) 假设平面坐标系上有四个点,要求构建单层感知器实现分类。 (3,3),(4,3) 两个点的标签为1; (1,1),(0,2) 两个点的标签为-1。 思路:要分类的数据是2维数据,需要2个输入…...
做个网站哪里可以做/网站推广的途径有哪些
ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。 USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息 ALL_*:有关用户可以访问的…...
电影资源分享网站怎么做的/抖来查关键词搜索排名
权限管理权限表:1 订单管理2 用户管理3 菜单管理4 权限分配5 Bug管理用户表:1 Alex2 egon用户权限关系表:1 11 22 1import pymysqlclass DB:__conn pymysql.connect(host"localhost", user"root"…...
web网站开发有什么作用/网络营销课程去哪里学
文章目录基本初始化添加用户和组创建存储池创建数据集共享数据集数据集权限控制基本初始化 去官方网站www.truenas.com下载iso镜像,直接安装就可以启动了,Turenas最新版是基于debian11X,这里忽略安装步骤,安装完成启动࿰…...
贵州城乡建设部网站/seo兼职外包
MATLAB 下的数字信号处理实现示例 附录一 信号、系统和系统响应 1、理想采样信号序列 ( 1)首先产生信号 x(n),0<n<50 n0:50; %定义序列的长度是 50 A444.128; %设置信号有关的参数 a50*sqrt(2.0)*pi; T0.001; %采样率 w050*sqrt(2.0)*pi; xA*exp(-a*n*T).*sin(w0*n*T); %…...
如何设计个人网站/关键词搜索数据
在华为mate40没有正式发布之前,当下话题最热的机型就是iPhone12了,四款手机也是分开时间段发布,目前6299元的基础版iPhone12人气最高,眼下也没有任何一款国产手机可以抗衡苹果5G手机,实在要找出一款可能就是接下来的华…...
做网站需要前置审批/百度快速排名软件下载
chatGPT基于所谓的大模型,这里有两个关键词一个是“大”,一个是“模型”,我们先看什么叫“模型”。所谓模型其实就是深度学习中的神经网络,后者由很多个称之为“神经元”基本单元组成。神经元是一种基础计算单元,它执行…...