更安全的ftp服务器Pure-FTP搭建(4)

news2025/1/18 9:03:59

实验简介
实验所属系列:Linux服务器搭建

实验对象: 本科/专科信息安全专业

相关课程及专业:计算机基础,计算机网络

实验时数(学分):2学时

实验类别:实践类

预备知识
本实验要求实验者具备如下的相关知识

也许您对FTP不陌生,但是您是否了解FTP到底是个什么玩意? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为 “文传协议” 用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。FTP用的比NFS更多,所以请您一定要熟练配置它。

其实在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftp, 但我们今天介绍的并不是它,如果您有兴趣可以自行查阅资料,本次实验我们使用pure-ftpd搭建ftp服务器,因为这个软件比vsftp配置起来更加灵活和安全。

pure-ftpd 官网是 http://www.pureftpd.org/project/pure-ftpd

下载:

wget http://download.pureftpd.org/pure-ftpd/releases/obsolete/pure-ftpd-1.0.32.tar.bz2

客户端测试使用lftp


实验目的

1、安装pure-ftp;

2、配置pure-ftp;

3、测试pure-ftp。

实验环境

CentOS6.5 试验台
网络拓扑见下。图:

 NS1: centos6.x  IP:10.1.1.125

Client:centos6.x  IP:10.1.1.124

查看本机的IP请使用:ifconfig 命令
 

实验步骤一

安装 Pure-ftp

之前我们都是说 用 yum 安装,这次我们使用源代码编译安装。编译安装所需要的软件:

软件的准备:

cmake :用来编译的 ;

gcc编译器;

gcc-gcc++编译器;

bison:一个通用的解析器;

可以用yum安装完成:yum install -y cmake gcc gcc-gcc++ bison

首先我们切换到 /opt目录 ,然后解压pure-ftp压缩包,然后进入 pure-ftp目录。

然后进行编译安装:

0x1 :

./configure \

--prefix=/usr/local/pureftpd \

--without-inetd \

--with-altlog \

--with-puredb \

--with-throttling \

--with-peruserlimits  \

 --with-tls

 ./configure 是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系。一步一般用来生成 Makefile,为下一步的编译做准备。你可以通过在 configure 后加上参数来对安装进行控制。我们可以用 ./configure -help 查看可以添加哪些参数。

 0x2 make :编译

make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。
0x3 make install,这条命令来进行安装。

 通常我们可以将 make 和make install 一起输入。像这样:

小提示:每执行一条命令,我们可以用 echo $? 来检测是否正确执行,而没有错误。

此命令的作用是显示上一条命令的返回结果。0代表命令执行成功。1-255都表示不成功。

实验步骤二

配置pure-ftp

pure-ftpd 编译安装很快就完成了,而且极少有出现错误的时候,下面就该配置它了:

在启动pure-ftpd之前需要先修改配置文件,配置文件为/usr/local/pureftpd/etc/pure-ftpd.conf。

0x1 我们需要手工建立配置文件目录,和将配置文件复制到配置文件目录,并修改权限


0x2 修改配置文件:/usr/local/pureftpd/etc/pure-ftpd.conf

我们要修改的很好,修改puredb的存储路径就行了,大概在126行,去掉前面的 # 注释,路径改成  /usr/local/pureftpd/etc/pureftpd.pdb


保存并退出。

0x3 建立pure-ftp账号


/usr/local/pureftpd/bin/pure-pw useradd ftp_test01  -u www -d /data/www/

其中,-u将虚拟用户ftp_test01与系统用户www关联在一起,也就是说使用ftp_test01账号登陆ftp后,会以www的身份来读取文件或下载文件。-d 后边的目录为ftp_user1账户的家目录,这样可以使ftp_test01只能访问其家目录/data/www/。password 是要你设置ftp_test01的密码。

到这里还未完成,还有最关键的一步,就是创建用户信息数据库文件:

/usr/local/pureftpd/bin/pure-pw mkdb

pure-pw还可以列出当前的ftp账号,当然也可以删除某个账号, 我们再创建一个账号:


列出账号:


删除账号:

0x4 启动 pure-ftp :

/usr/local/pureftpd/etc/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf


如果是启动成功,会显示一行长长的以Running开头的信息,否则那就是错误信息。


实验步骤三

 测试pure-ftp

0x1 :我们在客户端用lftp进行测试。在linux系统中,lftp是个功能强大的文件传输工具,支持命令补全、历史记录、多任务后台执行,还有书签、排队、镜像、断点续传、多进程下载等功能。

我们可以现在服务器上创建一个文档。

 在本机上测试:

 在客户端测试:

 我们可以敲 help ,看看有哪些能用的命令哦~:

 具体的命令帮助我们可以用 help command 来看。比如 put命令

 0x2 lftp常用命令:

显示工作目录:lpwd,pwd ;分别是显示本地工作目录,和远程ftp工作目录。

 切换目录:lcd,cd;分别是切换本地工作目录,和远程目录。

 切换远程目录,我们可以先创建一个,再试试。当然你得有权限创建。权限限制可以通过修改配置文件实现

 下载命令:get ,mget,pget;分别对应的是下载单个文件,多个文件,和多线程下载。

 当我get 了一个文件,默认情况下会下载到当前目录(即你执行lftp 命令的那个目录,不是远程上的目录哦)。

显示本地工作目录的文件列表:!ls

其中, ! 表示执行本地命令,lftp中没有与 ls 对应的本地命令 lls, 所以要使用 !ls 显示本地目录文件。

上传命令:put,mput;分别是上传单个文件,和多个文件

更多命令用法,自行查阅资料。(manpage不要忘了哦~)

退出使用 exit :

具体实验步骤:

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

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

相关文章

【JVM】Java类加载机制详解

【JVM】Java类加载机制详解 文章目录【JVM】Java类加载机制详解一:类加载子系统1:类加载器子系统的作用2:加载器 ClassLoader 的角色二:类的加载过程1:加载阶段2:验证阶段:确保被加载的类的正确…

[leetcode 215] 数组中的第K个最大元素

题目 题目:https://leetcode.cn/problems/kth-largest-element-in-an-array/description/ 解法 这道题目目前快排可以直接过,但是时间复杂度是 O(nlogn)O(nlogn)O(nlogn)。 想要 O(n)O(n)O(n),这就涉及到408考研知识点了😂&…

Java高手速成 | 使用TCP进行手机文件传输

由于TCP是面向流的,这意味着接收端有可能会在一次接收动作中接收两个或者多个数据包,那么当发送方需要把一个大文件分批连续发送时,如何保证接收方能够正确地接收并重修组会成一个完整的文件显得十分重要,本节通过一个端到端的手机…

每天10个前端小知识 【Day 4】

前端面试基础知识题 1. js中如何判断一个值是否是数组类型? instanceof const arr []; arr instanceof Array; // true Array.isArray const arr []; Array.isArray(arr) // true const obj {}; Array.isArray(obj) // false Object.prototype.isPrototype…

拉伯证券|A股延续强势格局 北向资金开年以来净买入超1500亿元

周四,A股商场整体延续强势格局,沪指贴合5日均线震动向上。科技板块仍是干流热点,半导体板块大面积飘红,创新药、CRO等生长赛道均涨势杰出。 到收盘,上证综指报3285.67点,涨0.02%;深证成指报1213…

初识SpringSecurity

初识SpringSecurity spring-security在spring的官网即可找到 spring-security spring-security官方文档的地址 https://docs.spring.io/spring-security/site/docs/ spring-security是Spring系列的关于安全的框架,还有一套安全的框架是Shiro 环境的搭建 项目使…

Android 播放base64音频

需求描述: 做一个Android扫码验证入场的程序: 如果验证通过,则播放一段“验证通过,请放行”的语音, 如果验证不通过,则播放其他的语音提示。 实现步骤: 1.要播放语音提示,先要有…

8个你可能不知道答案的常见JavaScript面试问题

不管你喜不喜欢,棘手的问题仍然会被野外的面试官问到。 原因是,这些问题可以告诉你很多关于你对语言的核心理解,因此你是否适合这份工作。 这些问题中涉及的常见概念包括: Hoisting关闭范围值与引用类型原型继承 今天我们要一石…

AC自动机详解

更好的阅读体验\color{red}{更好的阅读体验}更好的阅读体验 文章目录前置知识字典树 Trie支持操作建字典树实现思想代码实现例题Trie字符串统计最大异或对AC自动机基础概念实现思想代码实现例题搜索关键词单词前置知识 字典树 Trie Trie 是一种能够快速插入和查询字符串的多叉树…

成功解决yum安装的php版本过低的问题

文章目录前言一. 问题复现二. 问题分析三. 问题解决:四. 重要补充1. yum-config-manager介绍2. yum-uitls介绍3. remi资源库总结前言 大家好,我是沐风晓月,日常学习过程经常会遇到一些奇奇怪怪的问题,而解决问题就成了常态&#…

鸿蒙开发学习|HarmonyOS工程介绍

系列文章目录 第一章 HarmonyOS是什么 第二章 基础环境和开发工具 文章目录系列文章目录前言一、HarmonyOS工程介绍二、工程目录结构三、工程目录介绍1.entry2.Ability3.库文件4.资源文件5.配置文件6.pack.info7.HAR总结前言 本文将会给大家梳理 HarmonyOS 源码目录结构&…

关于《利用LexYacc进行词法分析和语法分析并生成语法树》

利用Lex&Yacc进行词法分析和语法分析 写在前面 利用Lex进行词法分析的流程在前面已经讲过,接下来是利用Lex&Yacc进行语法分析,最后可视化生成语法树。具体的操作视频:https://www.bilibili.com/video/BV1wY411q7aH/ 语法分析流程 …

【MySQL】MySQL 8.0 新特性之 - 窗口函数(Window Functions)

窗口函数 - Window Functions1. 定义1.1 窗口函数1.2 语法格式2. 分类2.1 序号函数2.1.1 row_number()2.1.2 rank()2.1.3 dense_rank()2.2.4 示例2.2 分布函数2.2.1 percent_rank()2.2.2 cume_dist()2.3 前后函数2.3.1 lag(expr, n, default)2.3.2 lead(expr, n, default)2.3.3…

致跟我一样苦恼的你们

2023年2月1日,我决定结束实习,回去准备春招和毕设。我把这个决定跟家人和朋友说时,他们似乎是有点不太赞同,他们觉得: “现在工作不好找,你可以先找好下一家公司后再选择离职” “毕设得事情,…

VBA提高篇_17 区域合纵连横,单元格精准定位

文章目录Application.Union方法:Application.Intersect方法:Range.CurrentRegion属性:Range.Resize(3,2)Range.Offset 单元格偏移属性Application.Union方法: 把多个Range联合在一起,作为一个新的Range对象返回 Sub RangeUnionDemo()Dim a&, r1 As Range, r2 As Range, r3 …

魔兽世界服务端AzerothCore+Centos系统+docker编译教程

魔兽世界服务端AzerothCoreCentos系统docker编译教程1.1 准备工作1.1.1 准备1.1.2 安装软件1.1.3 下载源码1.1.4 地图文件1.2 修改配置文件1.2.1 修改环境变量文件1.2.2 修改文件执行权限1.2.3 修改配置文件1.3 编译及启动1.3.1 编译项目1.3.2 启动容器1.3.3 无法启动1. 网络问…

【Java多线程】线程的安全问题

根据上篇文章买票问题举例,还可能出现的问题: 代码如下: class Window1 implements Runnable{private static int ticket 100;Overridepublic void run() {while (true){if (ticket > 0){try {Thread.sleep(100);} catch (InterruptedExc…

网站优化与seo的方法(seo的优化基础)

SEO优化的常规思路,别全以转化为目标 SEO优化作为现在公司推广营销的基础,几乎每个公司都在做这件事。这种优化既可以提升品牌知名度,又能直接给公司带来流量,确实让不少公司感觉很有用。但是在持续的过程中,又会觉得…

ESP32 Arduino 学习篇(五)TFT_eSPI库

前期准备:1.TFT_eSPI库的安装首先在Libraries里面搜索安装TFT_eSPI库到你的工程文件里面。2.TFT_eSPI库的配置文件配置该库有User_Setup.h和 User_Setup_Select.h两个配置文件,支持 ①自定义参数或 ②使用已有配置 驱动TFT屏幕。User_Setup.h — 由自己定…

PCB阻焊层介绍与设计经验总结

🏡《总目录》 目录1,什么是阻焊层2,阻焊层的用途,3,阻焊层的工艺流程4,阻焊设计的注意事项1,什么是阻焊层 阻焊层是顶层或底层布线层表面的顶层保护层,就是PCB表层的绿油层,在阻焊层…