Linux系统管理与编程17:自动化部署ftp服务

兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。

#virtual用户管理:passerbyA、captain和admin三个虚拟用户

# passerbyA只能看,captain可看读写上传,但不能删除。admin全部权限

[root@shell shell]# vim myFtp.sh

#!/bin/bash

#-----------------------------------------------------------

# File Name: myFtp.sh

# Version: 1.0

# Created: 2025-05-09 01:36:21

# Author:  网工XXX

# Contact:  QQ15523232551

# Copyright(R):CQIE

# Description:1.virtual用户管理了passerbyA、captain和admin

#               三个虚拟用户

#             2.passerbyA只能看,captain可看读写上传,但不能

#               删除。admin全部权限

#===========================================================

#我的化妆盒

RED='\033[31m'

GREEN='\033[32m'

YELLOW='\033[43m'

BLUE='\033[94m'

RedBlink="\e[5;31m"       #5是闪烁,31m是红色

UL='\033[4m'            #下划线

RESET='\033[0m'            #复位

# 安装必要组件

sudo yum install -y ftp vsftpd

# 创建虚拟用户映射的系统用户

sudo useradd -d /home/virtual -s /sbin/nologin virtual

sudo chmod 755 /home/virtual

# 创建虚拟用户数据库文件

sudo bash -c 'cat > /etc/vsftpd/vusers.txt << EOF

passerbyA

passerbyA_pass

captain

captain_pass

admin

admin_pass

EOF'

# 生成数据库文件

sudo db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db

sudo chmod 600 /etc/vsftpd/vusers.db

# 备份原始PAM文件

sudo cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

# 配置PAM认证

sudo bash -c 'cat > /etc/pam.d/vsftpd << EOF

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

EOF'

# 创建虚拟用户配置文件目录

sudo mkdir -p /etc/vsftpd/vusers_conf

# 配置passerbyA(只读)

sudo bash -c 'cat > /etc/vsftpd/vusers_conf/passerbyA << EOF

anon_world_readable_only=NO

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

EOF'

# 配置captain(上传/下载/修改,不能删除)

sudo bash -c 'cat > /etc/vsftpd/vusers_conf/captain << EOF

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=NO

EOF'

# 配置admin(完全权限)

sudo bash -c 'cat > /etc/vsftpd/vusers_conf/admin << EOF

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

EOF'

# 备份原始vsftpd配置

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

# 生成新的vsftpd配置

sudo bash -c 'cat > /etc/vsftpd/vsftpd.conf << EOF

anonymous_enable=NO

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=YES

listen_ipv6=NO

# 虚拟用户配置

user_config_dir=/etc/vsftpd/vusers_conf

guest_enable=YES

guest_username=virtual

allow_writeable_chroot=YES

pam_service_name=vsftpd

# 被动模式设置

pasv_enable=YES

pasv_min_port=50000

pasv_max_port=50010

EOF'

# 设置目录权限

sudo chown -R virtual:virtual /home/virtual

sudo chmod 755 /home/virtual

# 处理防火墙

sudo firewall-cmd --permanent --add-port=21/tcp

sudo firewall-cmd --permanent --add-port=50000-50010/tcp

sudo firewall-cmd --reload

# 处理SELinux

sudo setsebool -P ftpd_full_access on

# 启动服务

sudo systemctl enable vsftpd

sudo systemctl restart vsftpd

echo -e  "${GREEN}安装配置完成!${RESET}"

echo -e "虚拟用户密码文件:/etc/vsftpd/vusers.txt (${RedBlink}请及时修改权限或删除${RESET})"

图17- 1

远端测试:

图17- 2

图17- 3

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

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

相关文章

2025python学习笔记

一.Python语言基础入门 第一章 01.初识Python Python的起源&#xff1a; 1989年&#xff0c;为了打发圣诞节假期&#xff0c;Gudio van Rossum吉多范罗苏姆&#xff08;龟叔&#xff09;决心开发一个新的解释程序&#xff08;Python维形&#xff09;1991年&#xff0c;第一个…

STM32单片机的快速成长路径规划

一、基础准备阶段&#xff08;1-2周&#xff09; C语言核心技能 重点掌握&#xff1a;指针操作、结构体、枚举、位操作、函数指针&#xff08;回调函数基础&#xff09;实践项目&#xff1a;通过51单片机或STM8完成LED控制、按键检测等基础项目&#xff0c;熟悉寄存器配置和调试…

torch.nn.init.uniform_

nn.init.uniform_ 是 PyTorch 中用于初始化张量&#xff08;tensor&#xff09;的一个函数&#xff0c;它的作用是将张量的值填充为从均匀分布中采样的随机数。 详细说明&#xff1a; 函数&#xff1a; torch.nn.init.uniform_(tensor, a0., b1.)tensor&#xff1a;需要被初始…

Spring MVC中跨域问题处理

在Spring MVC中处理跨域问题可以通过以下几种方式实现&#xff0c;确保前后端能够正常通信&#xff1a; 方法一&#xff1a;使用 CrossOrigin 注解 适用于局部控制跨域配置&#xff0c;直接在Controller或方法上添加注解。 示例代码&#xff1a; RestController CrossOrigin…

基本句子结构

以下是英语句子五种基本结构的详细解释&#xff0c;并附上系动词的全面分类及示例&#xff1a; ​1. 主谓结构&#xff08;SV&#xff09;​ ​结构&#xff1a;主语&#xff08;Subject&#xff09; 不及物动词&#xff08;Intransitive Verb&#xff09;​核心&#xff1a;…

游戏引擎学习第264天:将按钮添加到分析器

回顾并为今天的工作做铺垫 随着时间的推移&#xff0c;我们的分析器&#xff08;profiler&#xff09;变得越来越强大。我通常会问大家是否记得我们要做什么&#xff0c;今天我们要做的似乎是按钮相关的功能。 今天的目标是实现按钮功能。我们从昨天留下的地方继续&#xff0…

大节点是选择自建机房还是托管机房

选择PCDN大节点自建机房还是托管机房&#xff0c;需综合考量资金实力、技术能力、运维需求、业务规模及合规要求。以下为具体分析&#xff1a; 自建机房的适用场景与考量因素 资金与技术门槛高 自建机房需投入服务器、存储、网络设备等硬件&#xff0c;以及机房建设、电力、散…

【SpringBoot】SpringBoot中使用AOP实现日志记录功能

前言一、AOP基本概念二、项目准备三、实现日志记录切面1、创建自定义日志注解2、实现日志切面3、配置AOP 四、使用示例1. 在Controller中使用2. 在Service中使用 六、高级配置1. 日志内容格式化2. 异步日志记录3. 日志脱敏处理 七、代理类生成的核心逻辑问题1&#xff1a; 既然…

linux中的常用命令(一)

目录 常用的快捷键 1- tab键:命令或者路径提示及补全&#xff1b; 2-ctrlc:放弃当前输入&#xff0c;终止当前任务或程序 3-ctrll;清屏 4-ctrlinsert:复制 5-鼠标右键:粘贴&#xff1b; 6-altc:断开连接/ctrlshift r 重新连接 7-alt1/2/3/等&#xff1a;切换回话窗口 8-上下键…

Pycharm(十九)深度学习

一、深度学习概述 1.1 什么是深度学习 深度学习是机器学习中的一种特殊方法,它使用称为神经网络的复杂结构,特别是“深层”的神经网络,来学习和做出预测。深度学习特别适合处理大规模和高维度的数据,如图像、声音和文本。深度学习、机器学习和人工智能之间的关系如下图所…

多视图密集对应学习:细粒度3D分割的自监督革命

原文标题&#xff1a;Multi-view Dense Correspondence Learning (MvDeCor) 引言 在计算机视觉与图形学领域&#xff0c;3D形状分割一直是一个基础且具有挑战性的任务。如何在标注稀缺的情况下&#xff0c;实现对3D模型的细粒度分割&#xff1f;近期&#xff0c;斯坦福大学视觉…

Vue——前端vue3项目使用汉字转拼音

在 Vue3 项目中&#xff0c;可以通过以下 第三方 JavaScript 包 实现汉字转拼音。这些包均兼容 Vue3&#xff0c;且无需依赖后端处理&#xff1a; 推荐方案 1. pinyin-pro 特点&#xff1a;功能强大、支持多音字、声调、拼音匹配、轻量级&#xff08;~20KB&#xff09;。安装…

批量统计PDF页数,统计图像属性

软件介绍&#xff1a; 1、支持批量统计PDF、doc\docx、xls\xlsx页数 2、支持统计指定格式文件数量&#xff08;不填格式就是全部&#xff09; 3、支持统计JPG、JPEG、PNG图像属性 4、支持统计多页TIF页数、属性 5、支持统计PDF、JPG画幅 统计图像属性 「托马斯的文件助手」…

LeetCode 每日一题 2025/5/5-2025/5/11

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 5/5 790. 多米诺和托米诺平铺5/6 1920. 基于排列构建数组5/7 3341. 到达最后一个房间的最少时间 I5/8 3342. 到达最后一个房间的最少时间 II5/9 3343. 统计平衡排列的数目5…

pytest自动化测试执行环境切换的两种解决方案

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&#xff0c;比如多套测试环境、预上线环境、UAT环境、线上环…

visual studio 2015 安装闪退问题

参考链接&#xff1a; VS2012安装时启动界面一闪而过问题解决办法 visual studio 2015 安装闪退问题

RocketMQ Kafka区别

架构 ZooKeeper&#xff1a;管理 Broker 注册、分区 Leader 选举及消费者组状态。Broker&#xff1a;存储 Partition数据&#xff0c;每个 Partition 为独立日志文件。Producer/Consumer&#xff1a;通过 ZooKeeper获取路由信息&#xff0c;实现消息分发与消费。 NameServer&am…

MySQL进阶篇2_SQL优化、锁

文章目录 1 SQL优化1.1插入数据优化1.2主键优化页分裂页合并主键设计原则 1.3order by设计优化1.4group by设计优化小理解 1.5limit设计优化顺序IO和随机IO小疑惑 1.6count设计优化1.7update优化关于隐式事务事务的DML操作 锁全局锁表级锁表锁元数据锁意向锁 行级锁锁的释放条件…

如何测试 esp-webrtc-solution_solutions_doorbell_demo 例程?

软件准备 esp-webrtc-solution/solutions/doorbell_demo 例程 此例程集成了 WebSocket 传输视频流的应用 硬件准备 ESP32P4-Function-Ev-Board 环境搭建 推荐基于 esp-idf v5.4.1 版本的环境来编译此例程 若编译时出现依赖的组件报错&#xff0c;可进行如下修改&#xff…

TransmittableThreadLocal:穿透线程边界的上下文传递艺术

文章目录 前言一、如何线程上下文传递1.1 ThreadLocal单线程1.2 InheritableThreadLocal的继承困境1.3 TTL的时空折叠术 二、TTL核心设计解析2.1 时空快照机制2.2 装饰器模式2.3 采用自动清理机制 三、设计思想启示四、实践启示录结语 前言 在并发编程领域&#xff0c;线程上下…