当前位置: 首页 > news >正文

用户验证FTP实验

用户FTP实验

目录

匿名用户验证:

本地用户验证:

本地用户访问控制:


匿名用户验证

 

例:(前提配置,防火墙关闭,yum安装,同模式vmware11)

现有一台计算机huyanggw(视作服务端),IP地址为192.168.50.1,安装了vsftpd服务,并启动

另一台计算机hy02(视为客户端),IP地址为192.168.50.50,安装了ftp服务

1:使用hy02计算机操作:ftp 1920.168.50.1 可进入

Name=ftp  passwd:enter(回车)  exit退出

2:验证是否允许匿名用户上传文件

anon_upload_enable=[YES|NO]

操作:cd /etc/vsftpd---ll---vim vsftpd.conf

启动服务:systemctl start vsftpd

可以发现默认配置为关闭状态,打开,删除#

进入到/var/ftp,查看

为pub赋予其他人权限chmod 777 pub

匿名用户客户端建立文件aaa.txt

ftp 192.168.50.1

ftp  回车

cd pub ->put aaa.txt->ls查看aaa.txt已经在目录下

3:验证是否允许匿名用户创建目录

anon_mkdir_write_enable=[YES|NO]

操作:设置anon_mkdir_write_enable=YES

wq保存退出,重启服务systemctl restart vsftpd

客户端进入ftp,可以建立a300文件夹

4:验证是否开放匿名用户的其他写入权限(删除、改名) anon_other_write_enable=[YES|NO]

操作: anon_other_write_enable=YES

wq保存退出,重启服务systemctl start vsftpd

客户端进入ftp,将1.txt删除

delete 1.txt   或者  del1.txt

本地用户验证

 

例:(前提配置,防火墙关闭,yum安装,同模式vmware11)

现有一台计算机huyanggw(视作服务端),建立普通用户a1,a2,a3,IP地址为192.168.50.1,安装了vsftpd服务,并启动

另一台计算机hy02(视为客户端),IP地址为192.168.50.50,安装了ftp服务

可选配置项

local_enable=[YES|NO] 是否允许本地用户登录FTP

local_umask=022 本地用户上传文件的umask值

local_root=/var/ftp 本地用户的FTP根目录

chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,确保安全

allow_writeable_chroot=YES 是否允许写入

chroot_list_enable=YES|NO 是否启用chroot_list_file

在/etc/vsftpd/chroot_list文件中列出被不限制的用户的列表chroot_list_file=/etc/vsftpd/chroot_list

1:验证是否允许本地用户登录FTP

local_enable=[YES|NO]

操作:默认为YES,直接验证,可以登陆

ftp 192.168.50.1 name=a1  passwd=密码  回车

且umask=022

2:验证是否允许写入、删除

allow_writeable_chroot=YES

操作:添加allow_writeable_chroot=YES,wq保存退出,重启服务systemctl restart vsftpd

删除文件,del 文件名

删除目录,rmdir 文件名

3:验证是否将用户权限禁锢在FTP目录,确保安全

local_root=/var/ftp 本地用户的FTP根目录

chroot_local_user=[YES|NO]

操作:添加chroot_local_user=YES,

删除local_root=/var/ftp的#注释,wq保存退出,

重启服务systemctl restart vsftpd

设置后显示为“/”,不可以切换目录

设置前显示为“/var/ftp”,可以切换目录

4:验证是否启用chroot_list_file以不限制用户列表

chroot_list_enable=YES|NO  是否启用chroot_list_file

在/etc/vsftpd/chroot_list文件中列出被不限制的用户的列表chroot_list_file=/etc/vsftpd/chroot_list

操作:添加chroot_list_enable=YES,

在新建chroot_list目录

在chroot_list添加a1用户,验证是否a1是否可以切换,目录,若可以,验证成功,否则验证失败

重启服务systemctl restart vsftpd

ftp 192.168.50.1

a1  密码 回车  

pwd查看当前路径  

cd /etc 切换路径                  切换成功

ftp 192.168.50.1

a2  密码 回车  

pwd查看当前路径  

cd /etc 切换路径   切换失败       验证成功

本地用户访问控制:

userlist_enable=YES

userlist_deny=YES

不允许/etc/vsftpd/user_list

文件中出现的用户名登录FTP

userlist_enable=YES

userlist_deny=NO

仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP

ftpusers

不允许/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,无论user_list如何设置

1:验证userlist_enable=YESuserlist_deny=YES

不允许/etc/vsftpd/user_list文件中出现的用户名登录FTP

操作:vim /etc/vsftp/vsftp.conf

添加userlist_enable=YES、userlist_deny=YES

vim  /etc/vsftp/vsftp.conf   输入a1   wq保存退出

重启服务systemctl restart vsftpd

验证a1用户是否可以登录ftp,若不可以,验证成功;

否则失败                                   验证成功

2:验证userlist_enable=YES     userlist_deny=NO

仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP

操作:vim /etc/vsftp/vsftp.conf

添加userlist_enable=YES、userlist_deny=NO

wq保存退出   重启服务systemctl restart vsftpd

验证a1,a2用户是否可以登录ftp,若a1可以a2不可以,验证成功;若a2可以a1不可以,则验证失败   验证成功

3:验证ftpusers

userlist_enable=YESuserlist_deny=YES

不允许/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,无论user_list如何设置

操作:vim ftpusers 输入a1

wq保存退出   重启服务systemctl restart vsftpd

验证a1,a2用户是否可以登录ftp,若a2可以a1不可以,验证成功;若a1可以a2不可以,则验证失败    验证成功

4:验证ftpusers  优先级是否高于userlist_deny=YES

操作:vim ftpusers 输入a1

wq保存退出   重启服务systemctl restart vsftpd

验证a1,a2用户是否可以登录ftp,若a1,a2均不可以,验证成功;若a1仍然可以,则验证失败        验证成功

本地用户使用被动模式传输

配置项

pasv_enable=YES 启用被动模式

pasv_min_port=2001 被动模式使用的最小端口号

pasv_max_port=2005 被动模式使用的最大端口号

验证

服务器主配置文件添加上述3条记录

客户端下载文件时,查看端口号

操作:

vim /etc/vsftpd/vsftpd.conf   

输入pasv_enable=YES

pasv_min_port=3001

pasv_max_port=3005

wq保存退出   重启服务systemctl restart vsftpd

查看当前端口状态  netstat -anptl

客户端操作:

ftp 192.168.50.1

a1  密码 回车  

而后回到服务端 查看当前端口状态  netstat -anptl

 

相关文章:

用户验证FTP实验

用户FTP实验 目录 匿名用户验证: 本地用户验证: 本地用户访问控制: 匿名用户验证: 例:(前提配置,防火墙关闭,yum安装,同模式vmware11) 现有一台计算机huy…...

App 软件开发《单选4》试卷答案及解析

App 软件开发《单选4》试卷答案及解析 注:本文章所有答案的解析来自 ChatGPT 的回答(给出正确答案让其解释原因),正确性请自行甄辨。 文章目录 App 软件开发《单选4》试卷答案及解析单选题(共计0分)1&#…...

代码随想录算法训练营第三十七天 | 力扣 738.单调递增的数字, 968.监控二叉树

738.单调递增的数字 题目 738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 解析 从后向前遍历&#xf…...

C++内存总结

1.2 C内存 参考 https://www.nowcoder.com/issue/tutorial?tutorialId93&uuid8f38bec08f974de192275e5366d8ae24 1.2.1 简述一下堆和栈的区别 参考回答 区别&#xff1a; 堆栈空间分配不同。栈由操作系统自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变…...

开发移动端官网总结_Vue2.x

目录 1、自定义加载中效果 2、HTML页面注入环境变量 / 加载CDN和本地库 3、在 Vue 中使用 wow.js 4、过渡路由 5、全局监听当前设备&#xff0c;切换PC端和移动端 6、移动端常用初始化样式 7、官网默认入口文件 8、回到顶部滑动过渡效果&#xff08;显示与隐藏、滑动置…...

Zookeeper+消息队列Kafka

一、Zookeeper 概述 官方下载地址&#xff1a;Index of /dist/zookeeper 1.1 Zookeeper 定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 1.2 Zookeeper 工作机制 Zookeeper从设计模式角度来理解&#xff1a;是一个基于观察者模式设…...

【滤波】设计卡尔曼滤波器

本文主要翻译自rlabbe/Kalman-and-Bayesian-Filters-in-Python的第8章节08-Designing-Kalman-Filters&#xff08;设计卡尔曼滤波器&#xff09;。 %matplotlib inline#format the book import book_format book_format.set_style()简介 在上一章节中&#xff0c;我们讨论了教…...

redis主备切换,哨兵模式,缓存穿透、缓存击穿、缓存雪崩问题

主备切换 主从复制指的是把一台Redis服务器的数据复制到其他Redis服务器上&#xff0c;前者称为主节点Master&#xff0c;后者称为从节点Slave&#xff0c;只能从Master单向复制到Slave&#xff0c;一般Master以写操作为主&#xff0c;Slave以读操作为主&#xff0c;实现读写分…...

2023山东icpc省赛总结

距离比赛结束已经一天多了&#xff0c;现在的感觉就是三个字&#xff1a;意难平。 这是我们第一次打现场赛&#xff0c;去之前真的是很激动。因为我们比赛前做了很多其他省的省赛模拟&#xff0c;也做了几套今年别的省的题目&#xff0c;做完会去搜题解&#xff0c;会看到别人写…...

linux0.12-12-fs

[606页] 第12章 文件系统 606–12-1-总体功能 607–12-1-1-MINIX文件系统 611–12-1-2-文件类型、属性和目录项 615–12-1-3-高速缓冲区 616–12-1-4-文件系统底层函数 616–12-1-5-文件中数据的访问操作 618–12-1-6-文件和目录管理系统调用 619–12-1-7-360KB软盘中文件系统…...

快速入门SpringMVC 学习

目录 SpringMVC 定义 MVC定义 创建SpringMVC项目 SpringMVC掌握功能 一、连接功能 RequestMapping(请求映射) GetMapping 和 PostMapping 二、获取参数功能 传递单个参数/多个参数 注意点&#xff1a; RequestParam(前后端参数映射) 前后端参数映射 RequestParam特…...

leetcode96--不同的二叉搜索树[java]

不同的二叉搜索树 leetcode 96 题 不同的二叉搜索树题目描述暴力递归解题思路代码演示执行效率 递归 缓存解题思路代码演示执行效率 动态规划专题 leetcode 96 题 不同的二叉搜索树 原题链接: 难度—中等 https://leetcode.cn/problems/unique-binary-search-trees/ 题目描述 …...

【Spring 项目的创建和使用】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. 创建 Spring 项目 2. 创建一个 普通 Maven…...

数据类型.

数据类型 数据类型分类 数值类型 tinyint类型 数值越界测试&#xff1a; mysql> create table tt1(num tinyint); Query OK, 0 rows affected (0.02 sec)mysql> insert into tt1 values(1); Query OK, 1 row affected (0.00 sec)mysql> insert into tt1 values(128…...

深入了解JavaScript中的Promise

在JavaScript中&#xff0c;异步编程是必不可少的。过去&#xff0c;我们通常使用回调函数来处理异步操作&#xff0c;但回调地狱&#xff08;callback hell&#xff09;和复杂的错误处理使得代码难以维护。为了解决这些问题&#xff0c;ES6引入了Promise&#xff0c;它是一种更…...

Solidity基础六

生活本来就是平凡琐碎的&#xff0c;哪有那么多惊天动地的大事&#xff0c;快乐的秘诀就是不管对大事小事都要保持热情 目录 一、Solidity的特殊变量(全局) 二、Solidity的不可变量 immutable的赋值方式 三、Solidity的事件与日志 事件和日志加深理解 四、Solidity的异常…...

自学网络安全解决问题方法

自学网络安全很容易学着学着就迷茫了&#xff0c;找到源头问题&#xff0c;解决它就可以了&#xff0c;所以首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题&#xff0c;看到后面有惊喜哦 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xf…...

Java之旅(七)

Java 异常 Java异常&#xff08;Exception&#xff09;是在程序运行过程中出现错误或异常情况时&#xff0c;由程序自动抛出&#xff0c;导致程序无法正常运行&#xff0c;用于向上层调用程序传递错误信息或中断程序执行的一种机制。 异常与错误不同&#xff0c;错误是由于程…...

测试报告模板二

项目名称 系统测试报告 平台测试小组 2023年x月xx日 文档信息 文档名称: 作者:...

C语句概述

1 、 C 语句分类&#xff1a; ①控制语句&#xff1a;二个分支语句&#xff08; if-else 、 switch &#xff09;&#xff0c;三个循环语句&#xff08; for 、 while 、 do - while &#xff09;&#xff0c;四个转移语句&#xff08; continue 、 break 、 goto 、 return…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...