Linux vsftp三种模式的简单配置部署
环境:Debian 6.1.27-1kali1 (2023-05-12)
vsftpd 安装
--查看是否当前系统是否已安装
apt list --installed | grep vsftpd
没有安装的话,就正常安装
apt-get update
apt-get install vsftpd
一、匿名用户模式
分享一些不重要文件,任何都可等到ftp服务器获取文件信息,配合防火墙将访问范围限制在内网
允许匿名用户登陆获取文件
--修改配置文件,允许匿名用户登陆
(修改配置之前,建议将原始默认配置文件备份,便于以后配置其他ftp服务器使用
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
误删配置文件,可以通过以下命令恢复
sudo apt-get clean
sudo apt-get update
sudo apt-get install --reinstall vsftpd
sudo apt-get purge vsftpd
sudo apt-get install vsftpd )
vi /etc/vsftpd.conf
anonymous_enable=YES --修改为YES允许匿名用户登陆
anon_root=/var/ftp --配置需要分享的ftp根目录
--配置修改完后开启vsftpd服务
systemctl start vsftpd
--检查
netstat -nltp | grep vsftpd
--同一局域网下,这里就可以用window10系统去下载文件了,打开浏览器,输入ftp://开启ftp服务器的ip地址

--若允许匿名用户在ftp服务器目录上写入或者上传文件,可以更改如下配置
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
二、本地用户模式
通过Linux本地账户密码信息进行登陆认证,比匿名用户模式更加安全,有一定的风险:攻击者通过ftp服务器漏洞获取到用户账户信息,即可登陆服务器进行控制。
--修改配置文件
vi /etc/vsftpd.conf
anonymous_enable=NO --关闭匿名用户登陆
local_enable=YES --允许系统用户登陆
write_enable=YES --允许执行修改文件系统的命令
local_mask=022 --采用022作为本地用户新增文件的默认文件权限
(文件默认开放所有全部权限666,需要减少的权限022,则默认文件权限为-rw-r--r--)
--创建一个新系统用户用于实践
adduser admin
(注意这里不要使用useradd无参数创建一个三无用户,无法登陆,使用参数adduser命令按提示创建新用户简单粗暴)
--使用admin用户连接ftp服务器创建一个test文件夹

--使用root用户登陆ftp服务器,发现无法登陆

博主在Debian 6.1.27-1kali1 (2023-05-12) 安装的vsftpd/kali-rolling 3.0.3-13+b2 amd64在/etc目录下没有vsftpd目录,自然也没有vsftpd.user_list,而vsftp.conf文件直接在/etc下,同样在/etc目录下找到ftpusers文件,该文件的所有用户不允许登陆ftp。
--将ftpusers文件里的root用户注释掉,重新登陆成功

tips:root用户从限制文件里移除会增加系统被入侵的风险,这里测试完直接恢复。
三、虚拟用户模式
ftp服务单独提供用户数据库文件,所有非匿名用户均被视为访客,并被映射成一个特定的用户。通过虚拟用户名以及口令进行登陆,即使用户名被破解也无法登陆到主机,相较前两种模式更为安全,同样配置起来也较为复杂。
1>新建虚拟用户名数据库文件
cd /etc
cat >>login_user <<EOF
heredoc> xiongda
heredoc> qwerty
heredoc> xionger
heredoc> 123456
heredoc> EOF
--通过db工具将特定格式文件文件转换成数据库文件
db_load -T -t hash -f /etc/login_user /etc/login_user.db
--降权
chmod 600 login_user.db
ls -l /etc/login_user.db
--删除源文本文件
rm /etc/login_user
2>配置PAM验证(动态加载模块,可按需求动态对验证内容进行变更,配置文件在/etc/pam.d/vsftpd)
vi /etc/pam.d/vsftpd
前面注释掉,末尾添加两行
auth required pam_userdb.so db=/etc/login_user
account required pam_userdb.so db=/etc/login_user
3>将虚拟用户与本地用户映射
useradd ftp_guest --新增一个本地用户
chmod -Rdf 755 /home/ftp_guest --修改该用户主目录权限
vi /etc/vsftpd/conf
guest_enable=YES
guest_username=ftp_guest --所有虚拟用户映射到该访客账户
同时修改其他配置:
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES --将各自虚拟用户限制各自根目录下
allow_writeable_chroot=YES
pam_service_name=vsftpd
user_config_dir=/etc/vsftp_user_conf --自定义用户配置文件夹
4>给不同用户设置不同的目录和权限
(这里给xiongda只读权限,给xionger上传文件和建立目录权限)
cd /home/ftp_quest
mkdir xiongda xionger
chown ftp_guest:ftp_guest xiongda xionger
cd /etc
mkdir vsftp_user_conf --上面配置的自定义配置文件
cd vsftp_user_conf
cat >>xiongda<<EOF
local_root=/home/ftp_guest/xiongda
EOF
----------------------
cat >>xionger<<EOF
write_enable=YES
anon_upload_enable=YES --文件上传权限
anon_mkdir_write_enable=YES --目录创建权限
local_root=/home/ftp_guest/xionger
EOF
重启ftp服务器
systemctl restart vsftpd
xiongda用户无法创建目录

xionger用户可以创建目录

相关文章:
Linux vsftp三种模式的简单配置部署
环境:Debian 6.1.27-1kali1 (2023-05-12) vsftpd 安装 --查看是否当前系统是否已安装 apt list --installed | grep vsftpd 没有安装的话,就正常安装 apt-get update apt-get install vsftpd 一、匿名用户模式 分享一些不重要文件,任…...
6.1.tensorRT高级(1)-概述
目录 前言1. tensorRT高级概述总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-概述 课程大纲可看下面的思维…...
【Python】将M4A\AAC录音文件转换为MP3文件
文章目录 m4aaac 基础环境: sudo apt-get install ffmpegm4a 要将M4A文件转换为MP3文件,你可以使用Python中的第三方库pydub。pydub使得音频处理变得非常简单。在开始之前,请确保你已经安装了pydub库,如果没有,可以通…...
个性新颖纯css手风琴效果选项卡
当涉及到个性新颖的纯CSS手风琴效果选项卡时,有多种方法可以实现。以下是三种可能的方法: 三种方法实现 方法一:使用:target伪类和CSS过渡效果 <style>.accordion {width: 300px;}.accordion-item {overflow: hidden;max-height: 0;…...
js的sendBeacon方法介绍
js的sendBeacon方法介绍 Beacon API是一种轻量级且有效的将网页活动记录到服务器的方法。它是一个 JavaScript API,可帮助开发人员将少量数据(例如分析或跟踪信息、调试或诊断数据)从浏览器发送到服务器。 在本文中,我们将介绍B…...
【Tomcat---1】IDEA控制台tomcat日志输出乱码解决
一、修改IDEA的文件编码配置为UTF-8 二、修改IDEA的vmoptions文件,添加-Dfile.encodingUTF-8 到Tomcat目录/conf文件夹修改logging.properties 重启idea即可。采用统一的编码...
Redis学习路线(2)—— Redis的数据结构
一、Redis的数据结构 Redis是一个Key-Value的数据库,key一般是String类型,不过Value的类型却有很多: String: Hello WorldHash: {name: "jack", age: 21}List: [A -> B -> C -> C]Set…...
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析)
探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析) Redis提供的持久化机制Redis持久化如何工作Redis持久化的故障分析持久化频率操作分析数据库多久调用一次write,将数据写入内核缓冲区?内核多久将系统缓冲…...
IT管理者年过50后何去何从
最近面试了一位前职为IT技术及管理专家,知名院校硕士毕业,唯一不同的是,他是一名已过50岁的IT技术及管理者。一直知道过了50岁,我们估计会有很大的坎,但是那时候从未曾想过连我们保险公司都会因为年龄而拒绝这样优秀的…...
C++字符串题基础(进阶请看下一个文章)
打印小写字母表 #include<iostream> #include<string.h> #include<iomanip> #include<stdio.h> #include<cmath> using namespace std; int main() {char na;for(int i1;i<13;i){cout<<n;n;}cout<<endl;for(int i1;i<13;i){c…...
webpack如何实现热更新?
webpack如何实现热更新? 要使用 Webpack 实现热更新,可以按照以下步骤进行配置: 1.在项目中安装 Webpack 和相关的开发依赖: npm install webpack webpack-cli webpack-dev-server --save-dev2.创建一个名为 webpack.dev.js 的…...
REST API的基础:HTTP
在本文中,我们将深入探讨万维网数据通信的基础 - HTTP。 什么是超文本? HTTP(超文本传输协议)的命名源于“超文本”。 那么,什么是超文本? 想象一下由超链接组成的文本、图像和视频的混合物。这些链接充当我…...
基于Docker-compose创建LNMP环境并运行Wordpress网站平台
基于Docker-compose创建LNMP环境并运行Wordpress网站平台 1.Docker-Compose概述2.YAML文件格式及编写注意事项3.Docker-Compose配置常用字段4.Docker Compose常用命令5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台1. Docker Compose 环境安装下载安装查…...
【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境3
4、下载MaixPy IDE,MaixPy 使用Micropython 脚本语法,所以不像 C语言 一样需要编译,要使用MaixPy IDE , 开发板固件必须是V0.3.1 版本以上(这里使用V0.5.0), 否则MaixPy IDE上会连接不上, 使用前尽量检查固…...
Java语言跨平台执行的核心JVM
本文重点 在前面的课程中,我们介绍了java中的三层JDK->JRE->JVM,其中JVM称为Java的虚拟机,只是用来执行的,JRE是运行环境,要想在操作系统中运行,除了JVM还需要类库,JDK=JRE+开发的包和工具。本文就将介绍一下JVM究竟为何物? JVM 有的人会认为JVM是java中的东西…...
家政服务小程序制作攻略揭秘
想要打造一个家政服务小程序,但是又不懂编程和设计?不用担心!下面将为你详细介绍如何利用第三方平台,从零开始打造一个家政服务小程序。 首先,你需要找到一个适合的第三方平台,例如乔拓云网。在乔拓云网的【…...
2023-07-29力扣每日一题
链接: 141. 环形链表 题意: 求链表是否有环 解: 刚好昨天做完的初级算法链表题,翻转和暴力 实际代码: #include<iostream> using namespace std; struct ListNode {int val;ListNode *next;ListNode() : …...
Dual pyramid GAN for semantic image synthesis
为了解决在图像合成时候小物体容易消失,大物体经常作为块的拼接来生成的。本文提出DP-GAN在所有尺度下共同学习空间自适应归一化模块的条件。这样尺度信息就会被双向使用,他统一了不同尺度的监督。(重点看图和代码) SPADE模块解释 GAN在生成包含许多不同…...
【Linux】更换jdk版本
目录 一、前言二、查看jdk版本号1、项目中的版本号(pom.xml)2、服务器中的版本号 三、更换jdk版本1、创建java文件夹2、下载并解压JDK安装包①、下载jdk安装包②、移动到创建好的/usr/local/java路径下③、解压jdk安装包 四、删除原来的jdk版本1、删除原…...
web-暴力破解密码
Burte Force(暴力破解)概述 暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率&…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
