如何搭建与使用FTP服务器

news2024/11/27 9:42:11

一、概述

目前用作搭建FTP服务器端的软件有很多,比如 Vsftpd、ProFTPD、PureFTPd、Wuftpd、ServerU、Filezilla Server等,这里使用Vsftpd进行搭建。

vsftpd 是“very secure ftp daemon”的首字母缩写,它是一款在Linux发行版中最受推崇的免费且开源的ftp文件服务器软件,其支持很多其它 FTP 服务器软件所不支持的功能,具有很高的安全性。

二、准备

1、PC机

准备一台用于搭建FTP服务器端的虚拟PC,该虚拟PC的IP为192.168.1.100,内存为4G,网络适配器为NAT(实际开发中为桥接模式),参考视频:https://www.bilibili.com/video/BV15m4y1d7ZP/?spm_id_from=333.999.0.0

2、连接

安装MobaXterm并远程连接此虚拟PC。

三、安装

1、安装
# yum -y install vsftpd
2、启动
# systemctl start vsftpd.service
3、自启
# systemctl enable vsftpd.service
4、状态
# systemctl status vsftpd.service

四、配置

vsftpd支持匿名用户系统用户虚拟用户三类账号登陆:匿名用户不用登陆FTP服务器端即可访问其中资源,这种类型的账号登陆明显存在安全问题;系统用户访问可以解决匿名用户带来的安全问题,但是系统用户通过系统账号和系统密码也可以登录操作系统,对操作系统依然存在安全隐患,所以实际工作中大多使用虚拟用户访问ftp服务器:多个虚拟用户映射一个系统用户,虚拟用户和所映射的系统用户均不能登陆linux系统,用户只能通过虚拟用户登陆ftp服务器,这样大大提高了系统安全性。

下面配置三个用户:admin用户为管理员,可以添加、删除、下载和重命名FTP服务器端文件,其余两个用户只能下载FTP服务器端文件,具体步骤如下:

1、账号/密码

a、创建存储虚拟用户账号和密码的文件,并添加虚拟用户账号和密码。

# tee /etc/vsftpd/virtusers <<-'EOF'
zhangsan
123456
lisi
123456
admin
123456
EOF
# cat /etc/vsftpd/virtusers

说明:第一行用户名,第二行密码,以此类推,用户名不能使用root为用户名。

b、基于前面创建的/etc/vsftpd/virtusers文件生成/etc/vsftpd/virtusers.db数据库文件,该文件进行了hash加密。

# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

说明:上面命令执行后,/etc/vsftpd/virtusers文件即可删掉。

c、清空/etc/pam.d/vsftpd内容,添加配置。

# cat > /etc/pam.d/vsftpd << EOF
auth          required     pam_userdb.so db=/etc/vsftpd/virtusers
account       required     pam_userdb.so db=/etc/vsftpd/virtusers
EOF
# cat /etc/pam.d/vsftpd

说明:db等号右边为数据库文件路径。

2、系统用户
# useradd ftpuser -d /home/share -s /sbin/nologin

说明:

ftpuser为用户名,该用户名就是多个虚拟用户所映射的系统用户账号,-d用于指定系统用户登入时的起始目录,这里为所有虚拟用户登陆ftp服务器的起始目录,即ftp上传下载根目录,-s用于设置该用户不可登录系统,因此无需为该用户设置密码;

该命令执行后将创建/home/share目录,share文件夹所有者为ftpuser。

3、权限权限

a、创建目录

# mkdir /etc/vsftpd/vconf

说明:该目录用于存储以**虚拟用户名(如admin、zhangsan、lisi)**命名的配置文件,文件内部指定了该用户名对应的权限。

b、管理员

# tee /etc/vsftpd/vconf/admin <<-'EOF'
write_enable=YES
anon_world_readable_only=NO
download_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
# cat /etc/vsftpd/vconf/admin

c、其他用户

①、zhangsan

# tee /etc/vsftpd/vconf/zhangsan <<-'EOF'
anon_world_readable_only=NO
EOF
# cat /etc/vsftpd/vconf/zhangsan

②、lisi

# tee /etc/vsftpd/vconf/lisi <<-'EOF'
anon_world_readable_only=NO
EOF
# cat /etc/vsftpd/vconf/lisi
4、配置文件

修改/etc/vsftpd/vsftpd.conf配置文件

#12行 关闭匿名用户登录,不影响虚拟用户登陆
anonymous_enable=NO
#19行 允许登录用户是否有写权限
write_enable=NO

#29行 是否允许匿名上传文件
anon_upload_enable=NO
#33行 是否允许匿名创建和删除目录
anon_mkdir_write_enable=NO
##是否允许匿名其他写操作,如文件重命名、文件删除和文件覆盖
anon_other_write_enable=NO

#49行
chown_uploads=NO
#73行
async_abor_enable=YES

#84行
ascii_upload_enable=YES
#85行
ascii_download_enable=YES

#88行
ftpd_banner=Welcome to blah FTP service.

#111行
ls_recurse_enable=NO

#116行
listen=YES

#125行,注释掉该行配置,否则提示500 OOPS: run two copies of vsftpd for IPv4 and IPv6错误
# listen_ipv6=YES

#127行 指定pam服务名,该名称对应于/etc/pam.d/vsftpd文件的文件名,登录FTP服务器时依据此文件的内容进行认证
pam_service_name=vsftpd

#128行 vsftpd.user_list和ftpusers配置文件里的用户禁止访问ftp,俗称黑名单
userlist_enable=YES
#129行 是否开启限制IP登录功能
tcp_wrappers=YES

##指定端口号
listen_port=21
##开启虚拟用户
guest_enable=YES
##指定虚拟用户所映射的系统用户,和前面第2步useradd命令创建的用户相对应
guest_username=ftpuser
##指定虚拟用户配置文件所在目录,和前面第3步的创建目录相对应
user_config_dir=/etc/vsftpd/vconf
##vsftpd在2.3.5版本之后增强了安全检查,如果系统用户只能访问ftp根目录及其子目录,则该根目录(/home/share)不能有写权限,如果检查发现还有写权限,则登陆ftp服务器时报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
allow_writeable_chroot=YES
5、重启服务
# systemctl restart vsftpd.service
6、SElinux策略
# setsebool -P ftpd_full_access 1

说明:上面命令用于修改SElinux策略,否则提示如下错误:

SELinux is preventing vsftpd from using the dac_read_search capability.
7、开放端口
# firewall-cmd --zone=public --add-port=21/tcp --permanent
# firewall-cmd --reload

五、访问

FTP客户端软件有很多,比如FireFTP、xFTP、FlashFXP和WinSCP,这里使用WinSCP。

1、下载

下载地址:https://winscp.net/eng/download.php,这里下载WinSCP-6.1-Setup.exe

2、安装

双击WinSCP-6.1-Setup.exe文件,按照提示进行安装即可,这里不再总结。

3、连接

a、启动WinSCP,如下所示:
在这里插入图片描述
b、输入主机名、端口号、用户名和密码—>点击“高级(A)…”,如下所示:
在这里插入图片描述
c、点击“连接”—>取消“被动模式§”选项—>点击“确定”,返回到第a步界面—>点击“登录”即可连接FTP服务器。

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

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

相关文章

应用到vscode

随着ChatGPT的热度持续上升&#xff0c;我们也不得不深刻认识到&#xff0c;这已经势不可挡了。我们必须去接受它&#xff0c;甚至是拥抱它。 私信我可以获取最新包 今天呢&#xff0c;我们要介绍的是vscode的一款插件&#xff0c;叫做ChatGPT&#xff1a; 使用方式 安装完成…

Xshell安装使用教程

简介 Xshell 是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不…

【C#图解教程】第三章 C#编程概述 笔记总结

程序实例 命名空间一组类型声明 using system&#xff1b;表示使用类型库中的system中的所有类 namespace Myspace{}则会创建一个新的命名空间&#xff0c;这个空间中可以声明该空间的类 SimpleProgram中使用了两个命名空间。先是使用了System命名空间中定义的console类&…

【Linux】项目自动化构建工具-make和Makefile 的使用和进度条的实现

文章目录 一、什么是make/makefile二、如何编写makefile三、make 的工作原理1.make的使用2.make的依赖性3.项目清理4..PHONY伪目标 四、Linux第一个小程序 -- 进度条1.\r&&\n2.行缓冲区概念3.进度条process.hprocesstest.cmakefile 一、什么是make/makefile 什么是mak…

【c语言习题】使用链表解决约瑟夫问题

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

在 Shell 脚本中使用 `exec` 命令的方法和用途

在 Shell 脚本中&#xff0c;exec 是一个非常有用的命令&#xff0c;用于执行命令或替换当前进程。它允许您在脚本中启动新的进程&#xff0c;并将控制权完全转移到新进程。本文将详细介绍在 Shell 脚本中使用 exec 命令的方法和用途。 什么是 Exec 命令&#xff1f; exec 是一…

python基础----02-----字面量、变量、数据类型及其转换、标识符以及字符串、数据输入(input语句)

一 字面量 1 字面量 字面量&#xff1a;在代码中&#xff0c;被写下来的的固定的值称之为字面量。类似C/C的字符串常量。 1.1 常见的python值类型 Python中常见的值类型&#xff1a; 实际上在C/C字面量和这里的类型还是有区别的&#xff0c;体现在内存存储中&#xff0c;字…

JavaScript正则表达式

1.介绍 2.语法 3.元字符 4.修饰符 目标&#xff1a;学习正则表达式概念及语法&#xff0c;编写简单的正则表达式实现字符的查找或检测。 一、介绍 1.什么是正则表达式 正则表达式&#xff08;Regular Expression&#xff09;是用于匹配字符串中字符组合的模式。&#xff08;…

设计模式之~原型模式

定义&#xff1a;用原型实例指导创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象&#xff0c;而且不需知道任何创建的细节。 优点&#xff1a; 一般在初始化的信息不发生变化的情况下&#xff0c;克隆是最…

触摸屏驱动的问题,在C站搜文章一下午解决不了,最后ChatGpt解决了

目录 一、遇到问题二、在C站搜索文章去解决问题的收获三、用 ChatGpt 去解决的收获四、总结 一、遇到问题 现实问题&#xff1a; 有一个基于Linux4.19内核开发了&#xff0c;在海思SS528芯片运行的系统&#xff0c;用鼠标可以正常使用。 现在要求使用一块公司开发的 多点触控屏…

ES+Redis+MySQL,这个高可用架构设计

一、背景 会员系统是一种基础系统&#xff0c;跟公司所有业务线的下单主流程密切相关。如果会员系统出故障&#xff0c;会导致用户无法下单&#xff0c;影响范围是全公司所有业务线。所以&#xff0c;会员系统必须保证高性能、高可用&#xff0c;提供稳定、高效的基础服务。 …

window10安装vim编辑器

我们在做git操作的时候&#xff0c;很多文字编辑工作会默认打开 Vim 编辑器来进行操作。 Vim 是一个高度可配置的文本编辑器&#xff0c;旨在让创建和更改任何类型的文本变得非常高效。大多数 UNIX 系统和 Apple OS X 都将它作为vi包含在内&#xff0c;用惯了Linux中的Vim编辑器…

机器学习实战7-基于机器学习算法预测相亲成功率

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战7-基于机器学习算法预测相亲成功率&#xff0c;随着社会的发展&#xff0c;大家都忙于事业&#xff0c;对自己的终身大事就耽搁了&#xff0c;相亲是一种传统的寻找伴侣的方式&#xff0c;随着时代的发…

谷歌训了28个15亿参数模型,说明数据对大模型训练的影响

夕小瑶科技说 原创 作者 | Python 随着ChatGPT的爆火&#xff0c;大规模语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;如日中天。然而&#xff0c;由于相关数据细节并不公开&#xff0c;相关研究大多都是盲人摸象式探索&#xff0c;缺乏系统的经验指导…

关于打卡小程序可能会遇到的部分问题【华为云Astro低代码体验季】

关于打卡小程序可能会遇到的部分问题【华为云Astro低代码体验季】 前提一、可能遇到的问题二、 改进 前提 已经注册华为云账号且浏览过 &#xff1a;华为云Astro制作打卡小程序&#xff0c;在此基础上可能会遇到的问题 一、可能遇到的问题 当创建完成应用后&#xff0c;如果…

设计模式之~外观模式

定义&#xff1a; 为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。 结构图&#xff1a; 区分中介模式&#xff1a; 门面模式对外提供一个接口 中介模式对内提供一个接口 优点&#xff1a; 松耦…

【算法题解】32. 验证二叉搜索树的递归解法

这是一道 中等难度 的题 https://leetcode.cn/problems/validate-binary-search-tree/ 题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含…

【瑞萨RA_FSP】DMAC/DTC编程实战

文章目录 一、DMAC存储器到存储器传输二、DTC外部中断触发传输 一、DMAC存储器到存储器传输 1. FSP配置 打开该工程的 FSP 配置界面。然后按如图步骤加入 DMAC。 加入 DMAC 后如下图所示。 单击上图中新添加的 r_dmac 框&#xff0c;然后在左下角的“属性”窗口配置 DMAC 模…

一分钟学一个 Linux 命令 - cd

前言 大家好&#xff0c;我是 god23bin。欢迎来到这个系列&#xff0c;每天只需一分钟&#xff0c;记住一个 Linux 命令不成问题。今天让我们从 cd 命令开始&#xff0c;掌握在 Linux 系统中切换目录的技巧。 什么是 cd 命令&#xff1f; cd 命令来自这么一个词语&#xff0…

liftOver 不同版本基因组文件相互转化

大家好&#xff0c;我是邓飞。前一段时间有小伙伴在星球提问&#xff1a;想将不同版本的SNP数据合并&#xff0c;不想重新call snp&#xff0c;想把绵羊的V2和V4版本的数据合并&#xff0c;具体来说&#xff0c;是V2转为V4然后与V4合并。 我建议用liftOver软件进行处理&#xf…