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用户可以创建目录 

 

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

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

相关文章

Android 通用带箭头提示窗

简介 自定义PopupWindow, 适用于提示类弹窗。 使用自定义Drawable设置带箭头的背景&#xff0c;测试控件和弹窗的尺寸&#xff0c;自动设置弹窗的显示位置&#xff0c;让箭头指向锚点控件的中间位置&#xff0c;且根据锚点控件在屏幕的位置&#xff0c;自动适配弹窗显示位置。…

C++——STL容器之list链表的讲解

目录 一.list的介绍 二.list类成员函数的讲解 2.2迭代器 三.添加删除数据&#xff1a; 3.1添加&#xff1a; 3.2删除数据 四.排序及去重函数&#xff1a; 错误案例如下&#xff1a; 方法如下&#xff1a; 一.list的介绍 list列表是序列容器&#xff0c;允许在序列内的任何…

页面滚动时隐藏element-ui下拉框/时间弹框

场景 在系统中&#xff0c;当&#xff08;有垂直滚动时&#xff09;点击下拉框后滚动页面&#xff0c;会发现下拉项会遮盖住页面中的元素&#xff0c;不会隐藏 解决&#xff1a;(以vue为例) 在页面滚动或者缩放时隐藏下拉项即可&#xff08;借助点击目标元素&#xff0c;下…

day3 驱动开发 c语言编程

通过ioctl&#xff08;内核应用层&#xff09; 控制led灯三盏&#xff0c;风扇&#xff0c;蜂鸣器&#xff0c;小马达 头文件head.h #ifndef __LED_H__ #define __LED_H__typedef struct {volatile unsigned int TZCR; // 0x000volatile unsigned int res1[2]; // 0x…

vscode远程调试配置

配置目标服务器免密登录 1.本地生成一组公私钥 输入ssh-keygen -t rsa&#xff0c;三次回车 2.公钥拷贝到远程机器&#xff08;注意要用git bash执行&#xff09; ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名目标服务器ip 3.重启目标服务器ssh服务 service sshd restart 4.测…

css实现鼠标滑动左下角弹框带动画效果

代码 <div classNamekuang></div> css代码 .kuang {height: 500px;width: 400px;// background-color: #fff;position: absolute;z-index: 10;bottom: 0;transform: translateX(-390px)}.kuang:hover {animation: myanimation 3s linear 1;animation-fill-mode:f…

Flowable-中间事件-空中间抛出事件

定义 空中间抛出事件是一个 Throwing 事件&#xff0c;在 intermediateThrowEvent 元素下不加入任何的事件定 义元素&#xff0c;就构成一个空中间抛出事件。它通常用于表示流程中的某个状态&#xff0c;在实际使用的过程中可 以通过添加执行监听器&#xff0c;来表示流程状态…

算法通关村第二关——两两交换链表中的节点的问题解析

题目类型 链表反转 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点&#xff0c;且必须在不修改节点内部的值的情况下完成本题&#xff0c;即&#xff1a;只能进行节点交换 效果图 题目分析 如果原始顺序是 dummy(虚拟头节点) …

Linux学习之系统函数库

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64&#xff0c;bash --version可以bash的版本是4.2.46。 在/etc/init.d/functions有许多系统定义好的函数&#xff0c;比如…

Swift 对象数组去重

使用 reduce 方法去重 使用 reduce 方法结合 contains 方法可以实现去重。reduce 方法用于将数组的元素进行累积计算&#xff0c;而 contains 方法用于检查元素是否已经存在于结果数组中。 struct SearchRecord: Equatable {let id: Intlet name: String }let records [Sear…

基于ChatGPT聊天的零样本信息提取7.25

基于ChatGPT聊天的零样本信息提取 摘要介绍ChatIE用于零样本IE的多轮 QA 实验总结 摘要 零样本信息提取&#xff08;IE&#xff09;旨在从未注释的文本中构建IE系统。由于很少涉及人类干预&#xff0c;因此具有挑战性。 零样本IE减少了数据标记所需的时间和工作量。最近对大型…

DevOps-Jenkins

Jenkins Jenkins是一个可扩展的持续集成引擎&#xff0c;是一个开源软件项目&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变成可能。 官网 应用场景 场景一 研发人员上传开发好的代码到github代码仓库需要将代码下载nginx服务器部署手动下载再…

递归实现 组合问题+排列问题(DFS)

目录 递归实现排列型枚举 递归实现排列类型枚举 II 递归实现组合型枚举 递归实现组合型枚举 II 递归实现指数型枚举 递归实现指数型枚举 II 递归不是循环&#xff0c;递归利用了系统栈&#xff0c;只要是函数都会被系统管理。当执行到函数地址入口时就会为函数在系统栈上分…

mac 删除自带的ABC输入法保留一个搜狗输入法,搜狗配置一下可以减少很多的敲击键盘和鼠标点击次数

0. 背景 对于开发者来说&#xff0c;经常被中英文切换输入法所困扰&#xff0c;我这边有一个方法&#xff0c;删除mac默认的ABC输入法 仅仅保留搜狗一个输入法&#xff0c;配置一下搜狗输入&#xff1a;哪些指定为英文输入&#xff0c;哪些指定为中文输入&#xff08;符号也可…

wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别

目录 wps表格横纵坐标轴怎么设置&#xff1f; MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP&#xff0c;全连接网络&#xff0c;DNN三者的关系 wps表格横纵坐标轴怎么设置&#xff1f; 1、打开表格点击图的右侧…

arm 函数栈回溯

大概意思就是arm每个函数开始都会将PC、LR、SP以及FP四个寄存器入栈。 下面我们看一下这四个寄存器里面保存的是什么内存 arm-linux-gnueabi-gcc unwind.c -mapcs -w -g -o unwind&#xff08;需要加上-mapcs才会严格按照上面说的入栈&#xff09; #include <stdio.h> …

雪花算法,在分布式环境下实现高效的ID生成

其实雪花算法比较简单&#xff0c;可能称不上什么算法就是一种构造UID的方法。 点1&#xff1a;UID是一个long类型的41位时间戳&#xff0c;10位存储机器码&#xff0c;12位存储序列号。 点2&#xff1a;时间戳的单位是毫秒&#xff0c;可以同时链接1024台机器&#xff0c;每台…

Android 面试题 线程间通信 六

&#x1f525; 主线程向子线程发送消息 Threadhandler&#x1f525; 子线程中定义Handler&#xff0c;Handler定义在哪个线程中&#xff0c;就跟那个线程绑定&#xff0c;在线程中绑定Handler需要调用Looper.prepare(); 方法&#xff0c;主线程中不调用是因为主线程默认帮你调用…

怎么在线修改图片?分享一个图片修改工具

无论是在个人或商业领域&#xff0c;我们都需要使用高质量的图片来传达信息或提高品牌形象。大尺寸的图片也会占据大量的存储空间和带宽&#xff0c;影响网站的加载速度和用户体验。因此&#xff0c;我们需要一种高效的工具来解决这个问题。今天向大家介绍一款非常实用的图片处…

Javascript -- 数组prototype方法探究

一、数组prototype方法探究 1、不改变原数组 1. concat() 这个是数组拼接方法&#xff0c;可以将两个数组或多个数组拼接并返回一个包含两个数组或多个数组内容的新数组&#xff0c;不会改变原数组 方法里面理论上可以写入n个参数&#xff0c; const arr [1,2]; var str …