Linux学习之vsftpd虚拟用户

news2025/1/31 11:26:37

/etc/vsftpd/vsftpd.conf里边有几项跟vsftpd虚拟用户有关的主要配置:

guest_enable=YES,允许匿名用户登录vsftpd
guest_username=virtual,指定虚拟用户账户为virtual,就是把虚拟用户映射成Linux本地用户,这样可以使用Linux文件权限进行读取和写入文件
user_config_dir=/etc/vsftpd/vuserconfig,设置用户权限配置目录
allow_writeable_chroot=YES,允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
pam_service_name=vsftpd.vu,指定PAM文件

接下来就演示一下如何添加vsuser1vsuser2vsuser3三个vsftpd虚拟用户。
1.先创建一个虚拟用户用来映射。
useradd vsvirtual -d /data/ftp -s /sbin/nologin创建一个本地用户vsvirtual,家目录设置为/data/ftp,shell设置为/sbin/nologin,不能用来登录。
在这里插入图片描述
echo "good" >> /data/ftp/good.txt创建一个文件为good.txt,并向里边写入good
在这里插入图片描述

2.添加虚拟用户,配置密码。
/etc/vsftpd/vuser.temp里边写入下边的内容:

vsuser1
Good#123
vsuser2
Good#1223
vsuser3
Good@1223

我这里直接使用下边的命令进行写入操作:

echo "vsuser1" >> vuser.temp
echo "Good#123" >> vuser.temp
echo "vsuser2" >> vuser.temp
echo "Good#1223" >> vuser.temp
echo "vsuser3" >> vuser.temp
echo "Good@1223" >> vuser.temp

在这里插入图片描述
/etc/vsftpd/vuser.temp里边奇数行是用户名,偶数行是密码。
在这里插入图片描述
在这里插入图片描述

db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db/etc/vsftpd/vuser.temp通过hash的方法生成/etc/vsftpd/vuser.db文件,chmod 600 /etc/vsftpd/vuser.db只能让root拥有读写权限。
在这里插入图片描述

3.建立用于支持虚拟用户的PAM文件
vim /etc/pam.d/vsftpd.vuser把下边的内容添加进去:

auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

在这里插入图片描述

4./etc/vsftpd/vsftpd.conf主文件里边进行配置。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/bak_vsftpd.conf/etc/vsftpd/vsftpd.conf复制成/etc/vsftpd/vsftpd.confrm -rf /etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf删除,grep -v '^#' /etc/vsftpd/bak_vsftpd.conf >> /etc/vsftpd/vsftpd.conf把注释的内容删除,然后写入到/etc/vsftpd/vsftpd.conf
最后的内容使用cat /etc/vsftpd/vsftpd.conf可以显示出来,只有以下内容:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

在这里插入图片描述

最后把上边的内容添加修改为如下:

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
# 允许匿名用户登录vsftpd
guest_enable=YES
# 指定虚拟用户账户为 vsvirtual
guest_username=vsvirtual
# 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
allow_writeable_chroot=YES
# 指定PAM文件,因为vsftpd.vuser里边只配置了虚拟用户,所以本地用户和匿名用户就不能使用vsftpd
pam_service_name=vsftpd.vuser
# 设置用户权限配置目录
user_config_dir=/etc/vsftpd/vuserconfig
userlist_enable=YES
tcp_wrappers=YES

在这里插入图片描述

5.配置用户权限文件
mkdir /etc/vsftpd/vuserconfig创建用户权限配置目录/etc/vsftpd/vuserconfig
在这里插入图片描述
vim /etc/vsftpd/vuserconfig/vsuser1,把下边的内容写进去:

# 登录进来后的目录
local_root=/data/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=YES

在这里插入图片描述
6.重新启动并且验证。
systemctl restart vsftpd.service重新启动。
在这里插入图片描述
重新开启一个主机远程登录,ftp 172.31.0.180进行ftp进行连接,然后输入用户名和密码,密码没有显示出来,等待时间有点久。
在这里插入图片描述

ls可以看到上边Sea1上边创建的good.txt文件信息。

get good.txt从服务器上下载good.txt!cat good.txt看一下本地good.txt里边的内容。

在这里插入图片描述

quit退出。
在这里插入图片描述

此文章为9月Day 2学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

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

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

相关文章

(本文由AI辅助编写)想买保时捷敞篷跑车的看过来!

(本文由AI辅助编写)想买保时捷敞篷跑车的看过来! 我算是后知后觉的,Chat6PT去年被人类发明后,我一直不看好他,可是怎奈周围人都在劝我体验一下,于是后来我借着ONLYOFFICE这个软件的Chat6PT功能…

Python学习之四 数据输入与输出

(一) 脚本编程 前面的章节,组要学习了一些简单的Python编程,使用的是交互式解释器,本章节将开始进行脚本编程。可以使用多种编辑器或者IDE完成编码,主要使用vim。 参考前续小节的写法,我们给a、b分别赋值3和5。 在终端运行程序后发现,没有任何输出。这就是本次我们将要…

Python入门教程 - 基本语法 (一)

目录 一、注释 二、Python的六种数据类型 三、字符串、数字 控制台输出练习 四、变量及基本运算 五、type()语句查看数据的类型 六、字符串的3种不同定义方式 七、数据类型之间的转换 八、标识符命名规则规范 九、算数运算符 十、赋值运算符 十一、字符串扩展 11.1…

2022年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程(1~8级)全部真题・点这里 第1题:stack or queue 栈和队列都是常用的线性结构,它们都提供两个操作: Push:加入一个元素。 Pop:弹出一个元素。 不同的是,栈是”先进后出”&…

Nmap 7.94 发布:新功能!

Nmap 的最新版本 7.94 在其 26 岁生日之际发布。 最重要的升级是在所有平台上将 Zenmap 和 Ndiff 从 Python 2 迁移到 Python 3。 这个新版本的 Nmap 7.94 进行了升级,进行了多项改进,修复了一些关键错误,并添加了新的 Npcap、操作系统指纹…

禅道项目管理系统 - 操作使用 (2023版)

1. 部门-用户-权限 新增部门 新增用户 设置权限 2. 项目集创建 项目集 - 添加项目集 3. 产品线创建 产品 - 产品线 4. 产品创建 产品 - 产品列表 - 添加产品 5. 产品计划创建 产品 - xx产品 - 计划 - 创建计划 我这里创建3个计划 (一期, 二期, 三期) 6. 研发需求 - 创建模块…

以antd为例 React+Typescript 引入第三方UI库

本文 我们来说说 第三方UI库 其实应用市场上的 第三方UI库都是非常优秀的 那么 react 我们比较熟的肯定还是 antd 我们还是来用它作为演示 这边 我们先访问他的官网 https://3x.ant.design/index-cn 点击开始使用 在左侧 有一个 在 TypeScript 中使用 通过图标我们也可以看出…

【目标检测】理论篇(3)YOLOv5实现

Yolov5网络构架实现 import torch import torch.nn as nnclass SiLU(nn.Module):staticmethoddef forward(x):return x * torch.sigmoid(x)def autopad(k, pNone):if p is None:p k // 2 if isinstance(k, int) else [x // 2 for x in k] return pclass Focus(nn.Module):def …

实战项目 在线学院之集成springsecurity的配置以及执行流程

一 后端操作配置 1.0 工程结构 1.1 在common下创建spring_security模块 1.2 pom文件中依赖的注入 1.3 在service_acl模块服务中引入spring-security权限认证模块 1.3.1 service_acl引入spring-security 1.3.2 在service_acl编写查询数据库信息 定义userDetailServiceImpl 查…

网站搭建最简化的引导操作 | 云服务器的购买选用 | 域名的选用 | 网站的上线和备案。

本文章面向对象为网站搭建的初次操作者,主要是一些自主使用的网站,为小白做为引导的教程。 一, 网站搭建的流程 1,服务器的租赁 2,购买域名 3,对域名进行备案 4,网站内部的搭建,上线…

读研对抗孤独感——快乐的意义在于和别人泛泛的交往

【对抗孤独需要肤浅朋友,不要什么精神之交】 评论区的精华总结几点: 1 降低道德感 2 降低交友门槛 3 交往的时候把别人看成自己的镜子就可以了 一些思考 其实 共鸣不是一开始就有的,而是似乎从一点点小的话题开始,每个人懂你心…

Mybatis1.1 环境准备

1.1 环境准备 数据库表(tb_brand)及数据准备实体类 Brand编写测试用例安装 MyBatisX 插件 数据库表(tb_brand)及数据准备 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主…

设计模式-4--原型模式(Prototype Pattern)

一、什么是原型模式 原型模式(Prototype Pattern)是一种创建型设计模式,它的主要目的是通过复制现有对象来创建新的对象,而无需显式地使用构造函数或工厂方法。这种模式允许我们创建一个可定制的原型对象,然后通过复制…

React原理 - React New Component Lifecycle

目录 扩展学习资料 React New Component Lifecycle【新生命周期】 React 组件新生命周期详解 React组件老生命周期 v15.x 为什么Fiber Reconciler要有新的生命周期函数呢? 新的组件生命周期 getDerivedStateFromProps 挂载阶段 更新阶段 卸载阶段 异常捕…

Backtrader中文文档专栏订阅须知

由于CSDN新出的扣费机制过于强盗,您通过平台支付的金额只有50%是我的。针对本专栏,如果您有付费意愿,建议通过我的淘宝小店完成支付。(我已调整本专栏在CSDN上的售价) 之所以如此安排,主要是考虑到文档凝聚…

什么是jvm

一、初识JVM(虚拟机) JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Jav…

Java中的动态代理(JDK Proxy VS CGLib)

前言 动态代理可以说是Java基础中一个比较重要的内容,这块内容关系到Spring框架中的AOP实现原理,所以特别写了一篇作为个人对这块知识的总结。这部分内容主要包括:JDK Proxy和CGLib的基本介绍、二者的实现原理、代码示例等。 什么是动态代理…

【python爬虫】9.带着小饼干登录(cookies)

文章目录 前言项目:发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识,从第9关开始,我们正式打开爬虫的进阶之门,学习爬虫更多的精进知识。 在前面几…

PY32F003F18点灯

延时函数学习完之后,可以学习PY32F003F18的GPIO输出功能。 1、Debug引脚默认被置于复用功能上拉或下拉模式:PA14默认为SWCLK: 置于下拉模式PA13默认为SWDIO: 置于上拉模式PF4默认为Boot:Boot引脚默认置于输入下拉模式 2、GPIO输出状态&#…

Prometheus+grafana安装配置

Prometheus安装配置 Prometheus下载地址 官方地址:Download | Prometheus 可根据系统版本下载想要的安装包,复制链接地址 wget https://github.com/prometheus/prometheus/releases/download/v2.33.3/prometheus-2.33.3.linux-amd64.tar.gzwg 解压pr…