Linux下FTP服务器搭建配置:vsftpd的安装与配置实验
文章目录
- vsftpd的安装与配置指南
- 1. vsftpd的安装
- 2. vsftpd配置详解
- 3. 匿名访问测试
- 4. 本地用户访问FTP的配置
- 5. 修改匿名用户和本地用户的默认根目录
- 6. 黑名单与白名单的使用
- 7. 使用Windows文件资源管理器登录
- 8. 拓展FTP的使用场景
- 9. 注意事项
vsftpd的安装与配置指南
本文详细介绍如何在Linux系统上安装与配置vsftpd(Very Secure FTP Daemon),包括匿名用户和本地用户的配置、安全性设置、以及黑白名单的使用。
1. vsftpd的安装
-
检查vsftpd安装包是否存在
rpm -qc vsftpd # 检查是否已安装vsftpd包,若存在则无需重新安装
-
安装vsftpd
yum install -y vsftpd # 使用yum安装vsftpd
-
查看vsftpd配置文件
cd /etc/vsftpd ls # 切换到vsftpd配置目录下并查看文件
-
备份配置文件
cp vsftpd.conf vsftpd.conf.bak # 备份配置文件,避免配置错误时无恢复方案
2. vsftpd配置详解
-
初始化全局配置
编辑vsftpd的主配置文件:vim /etc/vsftpd/vsftpd.conf
常用配置项:
anonymous_enable=YES
开启匿名用户访问(默认已开启)。local_enable=YES
允许本地系统用户访问(如useradd zhangsan
,默认已开启)。write_enable=YES
允许服务器写操作(开启上传功能,必须开启,默认已开启)。anon_umask=022
设置匿名用户上传文件的权限掩码(反掩码,默认022表示权限为755)。
-
允许匿名用户拥有更高级别权限
anon_upload_enable=YES
允许匿名用户上传文件(默认注释,需取消注释)。anon_mkdir_write_enable=YES
允许匿名用户创建目录(默认注释,需取消注释)。anon_other_write_enable=YES
允许匿名用户进行删除、重命名、覆盖等操作(需手动添加此项配置)。
-
重启vsftpd服务并关闭防火墙
防火墙和SELinux核心防护必须关闭。
systemctl restart vsftpd # 重启vsftpd服务 systemctl stop firewalld # 关闭防火墙,允许外部访问FTP服务 setenforce 0 # 临时关闭SELinux
3. 匿名访问测试
-
设置匿名用户默认根目录
chmod 777 /var/ftp/pub/ # 设置目录权限,允许匿名用户进行读写操作 echo 'hello world!' > /var/ftp/pub/test.txt # 创建测试文件
-
在Windows系统中测试FTP访问
-
打开命令提示符(cmd)。
-
输入以下命令连接FTP服务器:
ftp 192.168.65.2
-
使用匿名用户访问,用户名为
ftp
,密码为空,直接回车登录。 -
使用以下命令测试匿名用户访问:
ftp> pwd # 查看当前目录,为Linux系统的/var/ftp/目录 ftp> ls # 列出当前目录内容 ftp> cd pub # 进入pub目录 ftp> get test.txt # 下载文件 ftp> put test2.txt # 上传文件
-
下载的文件在当前Windows登录用户的用户文件夹根目录下(如用户名为
aaa
,则根目录在C:\Users\aaa
),此时目录下即可看到test.txt的文件成功下载。
-
注意: 匿名用户权限过高会带来安全隐患,建议谨慎使用。
4. 本地用户访问FTP的配置
-
创建本地用户并设置密码
id zhangsan id lisi # 检查是否存在zhangsan和lisi用户useradd zhangsan echo '123' | passwd --stdin zhangsanuseradd lisi echo '123' | passwd --stdin lisi
-
配置vsftpd允许本地用户访问
vim /etc/vsftpd/vsftpd.conf
配置项:
local_enable=YES
启用本地用户访问。anonymous_enable=NO
禁止匿名用户访问。write_enable=YES
开放服务器的写权限(若要上传必须开启)。local_umask=077
设置上传文件仅宿主用户可访问(反掩码,077表示权限为700)。
再次尝试登录测试,成功访问,并且可以修改任何目录文件。默认登录目录为登录的用户名的家目录,如
/home/zhangsan
。 -
限制本地用户的访问目录
vim /etc/vsftpd/vsftpd.conf
配置项:
chroot_local_user=YES
将本地用户限制在宿主目录中(默认注释,需开启)。allow_writeable_chroot=YES
允许被限制的用户主目录具有写权限(需手动添加)。
-
重启vsftpd服务
systemctl restart vsftpd
-
测试本地用户访问
在Windows系统中,使用命令提示符连接FTP服务器:ftp 192.168.233.21
使用
zhangsan
作为用户名,123
作为密码。测试更改目录操作:ftp> cd /etc ftp> cd /home
若返回
550 Failed to change directory
,则说明已成功限制用户访问。此时用户访问被限制在当前用户
zhangsan
的家目录下(但是显示为“/”根目录),且只能修改此处目录下的内容。
5. 修改匿名用户和本地用户的默认根目录
-
修改配置文件
配置项:vim /etc/vsftpd/vsftpd.conf
anon_root=/var/www/html
设置匿名用户的根目录。local_root=/var/www/html
设置本地用户的根目录。
6. 黑名单与白名单的使用
黑名单:在黑名单上标记的用户是禁止访问的对象。
白名单:在白名单上标记的用户是允许访问的对象,白名单比黑名单的制定更为严格和安全。
-
修改user_list文件内容
user_list
用户列表文件默认存在于 ****/etc/vsftpd/
目录下,在其中添加修改用户名,再配置vsftpd.conf
即可。 -
启用黑名单
vim /etc/vsftpd/vsftpd.conf
配置项:
userlist_enable=YES
启用user_list
用户列表文件(默认存在且开启)。userlist_deny=YES
设置为黑名单模式,禁止列表中的用户访问(需手动添加)。
-
启用白名单
vim /etc/vsftpd/vsftpd.conf
配置项:
userlist_enable=YES
启用user_list
用户列表文件。userlist_deny=NO
设置为白名单模式,仅允许列表中的用户访问。
注:报错的话可以使用
journalctl -xe
详细模式查看日志的尾部消息,并分析。若再报错或无法分析,可以使用备份文件,只在备份文件中修改黑白名单即可。 -
使用root用户登录FTP
如果需要允许root
用户登录FTP服务,需要在ftpusers
文件中注释掉root
用户:vim /etc/vsftpd/ftpusers
注释掉
root
所在的行即可。 -
测试黑名单与白名单
在Windows系统中,使用FTP命令连接服务器测试用户访问权限:ftp 192.168.233.21
尝试使用黑名单中的用户登录,会返回
530 Permission denied
。
7. 使用Windows文件资源管理器登录
在Windows文件资源管理器地址栏按照如下格式输入地址:
ftp://lisi@192.168.65.2
以上即为vsftpd的安装与配置详解,配置过程中需注意用户权限的设置,确保系统安全性。
8. 拓展FTP的使用场景
场景一:搭建YUM仓库
可用于通过FTP搭建YUM仓库,可以让多个Linux客户端从FTP服务器获取软件包,简化软件的分发与安装过程。
步骤1:准备YUM仓库
-
创建YUM仓库目录
在FTP服务器上,创建YUM仓库的存储目录:mkdir -p /var/ftp/pub/yum-repo # 创建YUM仓库目录
-
复制RPM包
将RPM包复制到该目录下:cp /path/to/rpms/*.rpm /var/ftp/pub/yum-repo/ # 复制RPM包到仓库目录
-
生成YUM仓库元数据
使用createrepo
工具生成YUM仓库的元数据:yum install -y createrepo # 安装createrepo工具 createrepo /var/ftp/pub/yum-repo/ # 生成仓库元数据
步骤2:配置FTP服务
-
确保FTP服务器配置正确
确保FTP服务已启动,并且配置允许匿名用户访问。编辑/etc/vsftpd/vsftpd.conf
:anonymous_enable=YES # 允许匿名用户访问 write_enable=YES # 允许写操作(如上传文件) anon_upload_enable=NO # 禁止匿名用户上传文件 anon_mkdir_write_enable=NO # 禁止匿名用户创建目录
重启FTP服务以应用更改:
systemctl restart vsftpd
-
设置目录权限
确保YUM仓库目录的权限正确:chmod -R 755 /var/ftp/pub/yum-repo/ # 设置目录和文件的读权限
步骤3:客户端配置
-
配置YUM源
在客户端上,创建一个新的YUM源配置文件:vim /etc/yum.repos.d/ftp.repo
文件内容如下:
[ftp-yum-repo] name=FTP YUM Repository baseurl=ftp://192.168.65.2/pub/yum-repo/ enabled=1 gpgcheck=0
-
测试YUM源
运行以下命令测试YUM源是否配置成功:yum clean all yum repolist # 列出可用的YUM源,检查是否包含ftp-yum-repo
-
安装软件包
从FTP服务器的YUM仓库中安装软件包:yum install -y <package-name> # 安装指定软件包
场景2:其他场景
除了搭建YUM仓库外,FTP还可用于以下场景:
- 远程备份与恢复
- 备份数据库: 数据库管理员可以定期将数据库备份文件上传到FTP服务器进行存档。
- 恢复数据: 在数据丢失时,可以通过FTP从备份服务器中恢复数据。
- 网站部署
- 静态网站托管: 将网站的HTML、CSS、JS等静态文件上传至FTP服务器,作为简单的静态网站托管服务。
- 动态网站的文件更新: 网站管理员通过FTP更新网站上的文件(如PHP文件或配置文件)。
- 文件共享与分发
- 内部文件共享: 通过FTP服务器在公司内部共享文件,便于员工间的资料分发。
- 外部客户下载: 为客户提供FTP账户,通过FTP服务器下载大型文件或软件包。
9. 注意事项
- 安全性: FTP传输不加密,建议在需要安全传输的场景下使用FTPS或SFTP。
- 权限管理: 根据不同场景设置FTP用户的权限,避免不必要的安全风险。
- 防火墙设置: 确保防火墙配置允许FTP相关的端口(如21)通信。
相关文章:
Linux下FTP服务器搭建配置:vsftpd的安装与配置实验
文章目录 vsftpd的安装与配置指南1. vsftpd的安装2. vsftpd配置详解3. 匿名访问测试4. 本地用户访问FTP的配置5. 修改匿名用户和本地用户的默认根目录6. 黑名单与白名单的使用7. 使用Windows文件资源管理器登录8. 拓展FTP的使用场景9. 注意事项 vsftpd的安装与配置指南 本文详…...

使用Java调用Apache commons-text求解字符串相似性实战
目录 前言 一、字符串距离的几种计算方法 1、Levenshtein 距离 2、Overlap Coefficient计算 3、Q-gram Matching 4、余弦相似性计算 二、基于余弦相似性的基地名称对比 1、加载百科中的基地信息列表 2、设置忽略词列表 3、将数据库地名和Excel进行对比 三、总结 前言…...
http request-01-XMLHttpRequest XHR 简单介绍
http 请求系列 http request-01-XMLHttpRequest XHR 简单介绍 http request-01-XMLHttpRequest XHR 标准 Ajax 详解-01-AJAX(Asynchronous JavaScript and XML)入门介绍 Ajax XHR 的替代方案-fetch Ajax XHR 的替代方案-fetch 标准 Ajax 的替代方案…...

关于tresos Studio(EB)的MCAL配置之DIO
General Dio Development Error Detect开发者错误检测 Dio Flip Channel Api翻转通道电平接口Dio_FlipChannel是否启用 Dio Version Info Api决定Dio_GetVersionInfo接口是否启用,一般打开就行。 Dio Reverse Port Bits让端口的位(通道)进…...
【漫谈C语言和嵌入式003】1394总线
1394总线(FireWire或IEEE 1394)是一种高速串行总线标准,最初由苹果公司开发,并在1995年被IEEE(电气与电子工程师协会)批准为国际标准。它最初的目标是提供一种高性能、低延迟的数据传输方法,用于…...

python爬虫爬取某图书网页实例
文章目录 导入相应的库正确地设置代码的基础部分设置循环遍历遍历URL保存图片和文档全部代码即详细注释 下面是通过requests库来对ajax页面进行爬取的案例,与正常页面不同,这里我们获取url的方式也会不同,这里我们通过爬取一个简单的ajax小说…...

Linux 用户管理的基本概念、常用工具及操作流程
😀前言 本篇博文是关于Linux 中用户管理的基本概念、常用工具及操作流程,并提供了一些实用的示例和注意事项。希望这些内容能帮助读者在日常工作中更加高效地管理 Linux 系统的用户账户,希望你能够喜欢🥰 🏠个人主页&a…...

手撕C++入门基础
1.C介绍 C课程包括:C语法、STL、高阶数据结构 C参考文档:Reference - C Reference C 参考手册 - cppreference.com cppreference.com C兼容之前学习的C语言 2.C的第一个程序 打印hello world #define _CRT_SECURE_NO_WARNINGS 1 // test.cpp // …...
NPM版本控制策略:实现版本候选行为的指南
引言 在现代JavaScript项目中,依赖管理是确保应用稳定性和安全性的关键环节。NPM(Node Package Manager)作为Node.js的包管理器,提供了一套灵活的版本控制机制,允许开发者精确控制依赖包的版本。版本候选行为…...
问题集锦6
1.外调外围接口数据库没有变化 我已经修改完发到线上,看调用用代码释放更新了 or 自己掉测试环境试下 handledList 2.list每次写入最前面 List<Integer> snew ArrayList<>();s.add(1);s.add(2);s.add(0,0);System.out.println(s);3.集合 List<Inte…...

【研发日记】嵌入式处理器技能解锁(四)——TI C2000 DSP的Memory
文章目录 前言 背景介绍 Memory映射 RAM ROM 外设Register Memory分配 应用实例 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信》 见《…...

Ubuntu离线安装docker
查看操作系统版本: rootzyh-VMware-Virtual-Platform:~/install# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04 LTS Release: 24.04 Codename: noble rootzyh-VMware-Virtual-Platform:~/install#…...

【抓耳挠腮,还是升职加薪,一起来画架构图!】
1. 焦头烂额 最近又遇到个焦头烂额的事情 ,老板有了新想法,业务有所转向,需要新的方案设计 ,架构设计,以进行后续实施。很快,第一次汇报来了, 由于前期准备时间短,模块拆分不清晰&a…...

算法的学习笔记—合并两个排序的链表(牛客JZ25)
😀前言 在算法面试中,链表问题是经常遇到的考点之一,其中合并两个排序链表是一个非常经典的问题。本文将详细介绍如何通过递归和迭代两种方式实现两个有序链表的合并。 🏠个人主页:尘觉主页 文章目录 😀合并…...

《虚拟之旅:开启无限可能的机器世界》简介:
1.Ubonto的介绍: Ubuntu 是一个流行的开源操作系统,基于 Linux 内核。 它具有以下一些特点和优势: 开源免费:任何人都可以免费使用、修改和分发。丰富的软件库:通过软件包管理器可以方便地安装各种应用程序。良好的…...
centos7 服务器搭建
1. 查看 centos 版本 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)2 .查看 ip地址 ip addr sudo yum install net-tools -y 3. 是否能够上网 ping www.baidu.com ping 114.114.114.114 sudo systemctl restart network 4. DNS 更新DNS配置 编辑/etc/r…...

【Godot4自学手册】第四十五节用着色器(shader)制作水中效果
本节内容,主要学习利用着色器制作水波纹效果,效果如下: 一、搭建新的场景 首先我们新建场景,根节点选择Node2D,命名为Water,给根节点添加两个Tilemap节点,一个命名为Background主要用于绘制地…...

VMware Workstation Pro 安装 Ubuntu Server
这里写目录标题 VMware Workstation Pro 安装 Ubuntu Server1. 启动选项2. 系统语言3. 安装程序升级4. 键盘配置5. 安装类型6. 网卡配置7. 代理配置8. 系统镜像配置9. 硬盘配置10. 账户配置11. Ubuntu Pro 版本12. SSH 服务13. 推荐软件14. 安装成功15. 第一次重启报错16. 登录…...

智能化包括自动化与非自动化
智能化通常指的是系统或设备具备智能功能,以提高其自主性和效率。智能化可以分为自动化与非自动化两大类,每一类都有其独特的特点和应用场景。 一、自动化 自动化指的是系统能够在无需人为干预的情况下完成任务或操作。自动化系统通常依赖于预设的规则、…...
微前端架构的容器化部署:策略、实践与优势
随着微服务架构的兴起,微前端架构也成为现代Web应用开发的热门趋势。容器化技术,以其轻量级、可移植性和易于管理的特点,成为微前端部署的理想选择。本文将详细介绍微前端架构下应用容器化部署的策略、实践步骤以及这一方法的优势。 容器化技…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...