搭建FTP服务(Linux)-ECS七天训练营DAY01

简介: 基于ECS搭建vsftp服务

FTP是用于在网络上进行文件传输的一套标准协议。

FTP服务器是使用FTP协议在网络上提供文件存储和访问的服务器。

FTP服务器的工作模式主要有两种:

1.主动模式:服务器主动连接用户端口发送数据。(端口可能被客户端防火墙堵塞)
2.被动模式:客户端连接服务器端口发送数据。(端口可能被服务器端防火墙堵塞)

安装vsftpd

vsftdp是一个用于 类Unix系统的安全且快速的 FTP服务器,支持IPv6,TLS,FTPS等功能。是一个在GPL许可证下开放源代码,免费的 FTP服务器。

网站:https://security.appspot.com/vsftpd.html

1.检查服务器是否安装FTP服务。

rpm -qa | grep vsftpd

如果没有显示任何内容,则需要尚未安装vsftpd

2.运行以下命令安装vsftpd

yum install -y vsftpd

安装.png

返回如图所示界面时,表示安装成功。

3.运行以下命令设置vsftpd服务开机自启动。

systemctl enable vsftpd.service

4.启动FTP服务。

systemctl start vsftpd.service

5.查看FTP服务监听端口

netstat -antup | grep ftp

出现如下图所示界面,表示FTP服务已启动,监听的端口号为 21。此时,vsftpd默认已开启匿名访问功能,您无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。

ftp监听.png

配置vsftpd

vsftpd允许用户以三种认证模式登录到FTP服务器上:

匿名开放模式:任何人都可以无需密码登录到FTP服务器上。(!不安全)

本地用户模式:通过Linux系统的本地账户密码星系进行登录认证。

虚拟用户模式:通过建立仅供 vsftpd服务使用的用户数据库,虚拟出用于登录认证的账户信息。

PS: 只可同时配置一种认证模式。

匿名开放模式-配置

1.修改配置文件vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

3.按i键进入INSERT模式,将匿名上传权限anon_upload_enable=YES的注释解开(删除#号)。

4.按ECS退出insert模式,输入:wq保存并退出配置文件。

5.更改/var/ftp/pub目录的权限,为FTP用户添加权限。

chmod o+w /var/ftp/pub/

7.重启FTP服务。

systemctl restart vsftpd.service

本地用户模式-配置

1.为FTP服务创建一个Linux用户。

adduser 用户名

2.修改/指定密码

passwd 用户名

3.创建一个供FTP服务使用的文件目录。(以/var/ftp/vsftpd为例)

mkdir /var/ftp/vsftpd

4.更改/var/ftp/vsftpd目录的拥有者。

chown -R 用户名 /var/ftp/vsftpd

9.输入以下命令修改配置文件

主动模式

sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets 
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets 
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf 
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录

被动模式

sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets 
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets 
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf 
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录 

​ 以上配置与主动模式相同,以下为被动模式新增配置

echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式 
echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #配置FTP服务器IP地址 
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值 
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值

6.在/etc/vsftpd目录下创建chroot_list文件,并在文件中写入例外用户名单。(此名单中的用户不会被锁定在主目录,可以访问其他目录)

vim /etc/vsftpd/chroot_list

7.重启FTP服务。

systemctl restart vsftpd.service

检验vsftp

1.打开FTP客户端/浏览器,在地址栏输入ftp://<FTP服务器IP地址>:FTP端口

2.(以firefox浏览器为例)在弹出的对话框中输入用户名和密码。

ftp登录.png

3.如出现如下界面,则登录成功,即可对FTP文件进行相应权限的操作。

ftp索引.png

参考/引用

基于ECS搭建FTP服务 - 开发者云体验平台 (aliyun.com)

linux环境:FTP服务器搭建 - 清水-殇 - 博客园 (cnblogs.com)

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
346 146
|
5月前
|
缓存 安全 Linux
六、Linux核心服务与包管理
在没有网络的情况下,使用系统安装光盘是获取RPM包的常用方法。场景二:配置本地文件镜像源 (使用系统安装光盘/ISO)(检查RPM包的GPG签名以保证安全) 或。YUM/DNF包管理工具 (yum/dnf)(此处可以放置您为本主题制作的思维导图)处理依赖问题的危险选项 (应极力避免)(覆盖文件、替换已安装包)。(list) 则是列出文件。(query file) 是。(假设系统安装光盘已挂载到。信息 (verbose)。(upgrade) 选项。(all) 已安装的包。(package) 选项
452 11
|
10月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
971 25
|
11月前
|
Linux iOS开发 MacOS
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
324 0
Gitea Enterprise 23.4.0 (Linux, macOS, Windows) - 本地部署的企业级 Git 服务
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
957 19
|
监控 Linux
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
5512 7
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
360 5
linux系统服务二!
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
287 3
linux系统服务!!!
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
1952 3