[Linux新手必看]从零开始教你搭建FTP服务实验

前言

在这个详细的指南中,我将手把手教你如何从零开始搭建你自己的FTP服务器。不管你是Linux系统的新手,还是对FTP概念一无所知,都不必担心,因为本教程将涵盖所有必要的基础知识和操作步骤。
本人亲测,只要跟着一步一步做,每一步都正确的情况下,是绝对可以做出来的.

一.实验介绍

1.FTP Server是什么?

1.1 FTP Server

即文件传输协议.
一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式 .
今天的互联网是由几千万台个人计算机、工作站、服务器、小型机、大型机、巨型机等具有不同型号、不同架构的物理设备共同组成的,而且即便是个人计算机,也可能会装有Windows、Linux、UNIX、Mac等不同的操作系统。为了能够在如此复杂多样的设备之间解决问题解决文件传输问题,文件传输协议(FTP)应运而生.

1.2 FTP 两种模式

FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式。
 主动模式:FTP服务器主动向客户端发起连接请求。
 被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。 防火墙一般是用于过滤从外网进入内网的流量,因此有些时候需要将FTP的工作模式设置为主动模式,才可以传输数据。

1.3 FTP的类型

在这里插入图片描述

2.Vsftpd是什么?

在这里插入图片描述

2.1 Vsftpd的特点

vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点。

2.2 Vsftpd的三种模式

vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上。

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
  • 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
  • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

二.正文

实验内容

在这里插入图片描述

在本次实验中,我们将深入学习和实践搭建FTP服务器的三种常见模式。
这三种模式各有特点,适用于不同的场景和需求。
通过本实验,你将能够理解每种模式的工作原理,并学会如何在实际环境中部署它们。

实验提前准备

  • CentOS7.
  • Vmware Workstation 17 pro(其他版本均可)
  • FileZilla Cilent

1.安装vsftpd(代码从这里开始)

 yum -y install vsftpd 

在这里插入图片描述

2.查看vsftpd的配置文件

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
cat /etc/vsftpd/vsftpd.conf

在这里插入图片描述

作用表在这里插入图片描述
在这里插入图片描述

3.匿名开放模式

3.1 配置文件

vim /etc/vsftpd/vsftpd.conf

点一下i是插入,按照下图进行修改配置文件,
wq是保存退出,如果不行就 wq! 强制保存退出

下图粗体就是要修改的部分

在这里插入图片描述

改完重启一下

systemctl restart vsftpd
#重启
systemctl enable vsftpd
#设置成开机自启动

3.2 放开SELinux

先查看一下SELinux,看一下access是开的还是关的

getsebool -a | grep ftp
#在SELinux中获取所有布尔值,并筛选出与FTP相关的布尔值

在这里插入图片描述

access关了就把它打开

setesbool -P ftpd_full_access=on
#在SELinux中设置ftpd_full_access策略为on

3.3 改目录所有权

ls -ld /var/ftp/pub 
#列出 /var/ftp/pub 目录的详细信息
chown -Rf ftp /var/ftp/pub
#将/var/ftp/pub 目录及其子目录下的所有文件和文件夹的所有者更改为 ftp 用户。
ls -ld /var/ftp/pub 
#再次列出 /var/ftp/pub 目录的详细信息

在这里插入图片描述

3.4 测试ftp

先找一下自己的ip,红框里就是自己的ip地址

ip ad
#第2条就是

在这里插入图片描述

然后就可以测试了,把下面的ip改成自己的ip

ftp 192.168.10.10
#替换成自己的ip地址

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f1d95d56ecd64a4aa1ce35ba1794df0e.png

3.5 FileZilla Cilent测试

1.登录
2.在/pub/里上传一张图片
3.图片下载下来,在windows界面打开查看
4.删除图片

请添加图片描述
放一张动图进行演示,后面两个我就不放动图了,和这个差不多

4.本地用户模式

和匿名一样,我们也分为五个步骤

4.1 配置文件

vim /etc/vsftpd/vsftpd.conf

点一下i是插入,按照下图进行修改配置文件,
wq是保存退出,如果不行就**wq!**强制保存退出

下图粗体就是要修改的部分
在这里插入图片描述

作用表

在这里插入图片描述

改完重启一下

systemctl restart vsftpd
#重启
systemctl enable vsftpd
#设置成开机自启动

4.2 给root用户权限

cat /etc/vsftpd/user_list

在这里插入图片描述

vim /etc/vsftpd/user_list
#进去user_list,照着上图把root删掉或者用"#"注释掉

4.3 测试ftp

在这里插入图片描述

如果失败了,那基本就是SELinux的问题,像下面这样子
在这里插入图片描述

先查看一下SELinux,看一下access是开的还是关的

getsebool -a | grep ftp
#在SELinux中获取所有布尔值,并筛选出与FTP相关的布尔值

在这里插入图片描述

access关了就把它打开

setesbool -P ftpd_full_access=on
#在SELinux中设置ftpd_full_access策略为on

4.4 FileZilla Cilent测试

1.创建一个用户,命名为自己的全拼姓名,FTP根目录为个人home目录下的FTP目录。
2.从Windows主机通过filezilla client软件利用刚创建的用户名访问服务器,在其中上传一张照片;然后下载并在window下打开。
3.同时从windows下使用root用户登录并重复刚才的操作并成功。

5.虚拟用户模式

因为虚拟用户模式的帐号口令都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安 全,但是
Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:

第1步:建立虚拟FTP用户数据库文件。

第2步:创建FTP根目录及虚拟用户映射的系统用户。
第3步:建立支持虚拟用户的PAM认证文件。
第4步:在vsftpd.conf文件中添加支持配置。
第5步:为虚拟用户设置不同的权限。

第6步:重启 vsftod服务,验证实验效果。

5.1 创建进行FTP认证的数据库

在这里插入图片描述

1.db_命令将原始明文信息转化为数据库
2.命名为vuser.db
3.降低数据库权限
4.删除原始明文信息

在这里插入图片描述

5.2 创建FTP根目录及虚拟用户映射的系统用户

为了方便管理FTP服务器上的数据,可以把这个系统本地用户的家目录设置为/var目录(该目录用来存放经常发生改变的数据)。
并且为了安全起见,我们将这个系统本地用户设置为不允许登录FTP服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本地用户进行登录。

在这里插入图片描述

5.3 建立支持虚拟用户的PAM认证文件

在这里插入图片描述

新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:实验效果。

在这里插入图片描述

5.4 在vsftpd.conf文件中添加支持配置

在这里插入图片描述

5.5 为虚拟用户设置不同的权限

  • 为虚拟用户设置不同的权限。虽然账户zhangsan和lisi都是用于vsftpd服务程序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许张三上传、创建、修改、查看、删除文件,只允许李四查看文件。
  • 这可以通过vsftpd服务程序来实现。只需新建一个目录,在里面分别创建两个以zhangsan和lisi命名的文件,其中在名为zhangsan的文件中写入允许的相关权限(使用匿名用户的参数):

在这里插入图片描述

再次修改配置文件

在这里插入图片描述

5.6 ftp测试

记得要用自己的ip,下面的IP是我的,ip ad查看自己的ip替换掉192.168.10.10

在这里插入图片描述

上面是检验张三,下面是检验李四

在这里插入图片描述

5.7 FileZilla Cilent测试

1.从Windows主机通过filezillaclient软件利用刚创建的虚拟用户名访问服务器,
2.在其中上传一张自己的照片;
3.图片下载并在window下打开
4.删除FTP服务器中的上传文件。

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 1. 理解FTP协议的基本原理; 2. 掌握Linux系统下搭建FTP服务器的方法; 3. 掌握FTP客户端的基本使用方法。 实验环境: - 操作系统:Ubuntu 16.04 LTS; - FTP服务器软件:vsftpd。 实验步骤: 1. 安装FTP服务器软件 在终端输入以下命令以安装vsftpd: ``` sudo apt-get install vsftpd ``` 2. 配置FTP服务器 2.1 修改配置文件 使用以下命令打开vsftpd的配置文件: ``` sudo vim /etc/vsftpd.conf ``` 在其中添加以下配置: ``` local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=YES ``` 其中,`local_enable`表示允许本地用户访问FTP服务器,`write_enable`表示允许用户上传文件,`chroot_local_user`表示用户登录后被限制在自己的主目录下,`allow_writeable_chroot`表示允许用户在自己的主目录下创建文件夹。 2.2 创建FTP用户 使用以下命令创建FTP用户,其中`username`为用户名,`password`为密码: ``` sudo useradd -m username -s /bin/bash sudo passwd username ``` 2.3 启动FTP服务器 使用以下命令启动FTP服务器: ``` sudo systemctl start vsftpd ``` 3. 使用FTP客户端连接FTP服务器 使用FTP客户端,如FileZilla,在连接时输入FTP服务器的IP地址、端口号(默认为21)、FTP用户名和密码,连接成功后即可进行文件上传和下载操作。 实验总结: 本次实验通过搭建FTP服务器和使用FTP客户端,深入理解了FTP协议的基本原理和FTP服务器搭建方法,掌握了FTP客户端的基本使用方法,加深了对Linux系统的理解和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值