Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount
要实现这个功能,可以通过创建一个自定义的mount
命令的包装器(wrapper)来完成。这个包装器脚本会首先提示用户输入密码,如果密码正确,则执行实际的mount
命令。以下是创建这样一个包装器的步骤:
-
创建一个名为
custom_mount
的脚本文件,这个文件将作为mount
命令的包装器。 -
在这个脚本中,首先提示用户输入密码,并进行验证。
-
如果密码正确,执行实际的
mount
命令。 -
如果密码错误,脚本将显示错误信息并退出。
-
将这个
custom_mount
脚本的路径添加到系统的PATH环境变量中(参考使用换将变量或配置文件章节),或者创建一个符号链接,使得custom_mount
可以在任何地方通过mount
命令来调用。
下面是一个简单的custom_mount
脚本示例:
#!/bin/bash# 预期的正确密码
CORRECT_PASSWORD="your_password_here"# 密码提示
read -s -p "Enter mount password: " USER_PASSWORD# 检查输入的密码是否正确
if [ "$USER_PASSWORD" == "$CORRECT_PASSWORD" ]; thenecho "Password correct. Proceeding with mount command."# 执行实际的mount命令/usr/bin/mount "$@"
elseecho "Error: Password incorrect. Mount command aborted."exit 1
fi
请将your_password_here
替换为你想要的密码。
接下来,你需要执行以下步骤:
-
保存上述脚本到一个文件中,例如
/usr/local/bin/custom_mount
。 -
给这个脚本执行权限:
chmod +x /usr/local/bin/custom_mount
-
(注意系统命令的实际路径位置,防止修改了原有的系统命令,具体可参考”问题“章节)创建一个
mount
的符号链接,指向你的包装器脚本:sudo ln -sf /usr/local/bin/custom_mount /usr/bin/mount
效果如下:
请注意,修改系统命令(如mount
)需要管理员权限,并且可能会影响系统的稳定性和安全性。务必谨慎操作,并确保你完全理解每一步的后果。
另外,出于安全考虑,不建议将明文密码存储在脚本中。可以考虑使用更安全的方法来验证密码,如使用sudo
或密钥认证。此外,如果你的系统有多个用户,你可能需要为每个用户设置不同的密码,或者使用集中式认证系统。
问题:如果更改了系统原有命令,会出现重复输入密码问题
查看系统实际命令的位置: which mount
1.移动原有命令到其他路径下,脚本中调用实际命令时填写 移动后的路径下的命令!
2.将系统命令默认的位置,创建软连接,指向脚本文件。
使用环境变量或配置文件来实现挂载前的密码验证
使用环境变量或配置文件来实现挂载前的密码验证,可以避免直接修改或替换系统命令,从而减少潜在的风险。以下是两种可能的方法:
方法一:使用环境变量
-
设置环境变量:创建一个环境变量,比如
MOUNT_REQUIRES_PASSWORD
,并在需要密码验证时将其设置为1
。 -
修改
custom_mount
脚本:修改你的密码验证脚本,检查这个环境变量。如果环境变量设置为1
,则执行密码验证;否则,直接调用mount
命令。
#!/bin/bashif [ "$MOUNT_REQUIRES_PASSWORD" == "1" ]; then# 预期的正确密码CORRECT_PASSWORD="your_password_here"# 密码提示read -s -p "Enter mount password: " USER_PASSWORDecho # Move to a new line after hidden password input# 检查输入的密码是否正确if [ "$USER_PASSWORD" == "$CORRECT_PASSWORD" ]; thenecho "Password correct. Proceeding with mount command."/usr/bin/mount "$@"elseecho "Error: Password incorrect. Mount command aborted."exit 1fi
else# 如果环境变量没有设置为1,直接调用mount命令/usr/bin/mount "$@"
fi
- 在需要时设置环境变量:在需要密码验证的情况下,运行脚本或命令之前,设置环境变量。
export MOUNT_REQUIRES_PASSWORD=1
方法二:使用配置文件
- 创建配置文件:创建一个配置文件,比如
/etc/mount_password.conf
,并在其中设置密码。
# /etc/mount_password.conf
PASSWORD=your_password_here
- 修改
custom_mount
脚本:修改你的脚本,从配置文件中读取密码,并进行验证。
#!/bin/bash# 从配置文件中读取密码
CONFIG_FILE="/etc/mount_password.conf"
CORRECT_PASSWORD=$(grep "^PASSWORD=" "$CONFIG_FILE" | cut -d '=' -f2)if [ -z "$CORRECT_PASSWORD" ]; thenecho "Error: Password not found in configuration file."exit 1
fi# 密码提示
read -s -p "Enter mount password: " USER_PASSWORD
echo # Move to a new line after hidden password input# 检查输入的密码是否正确
if [ "$USER_PASSWORD" == "$CORRECT_PASSWORD" ]; thenecho "Password correct. Proceeding with mount command."/usr/bin/mount "$@"
elseecho "Error: Password incorrect. Mount command aborted."exit 1
fi
- 在需要时调用脚本:在需要挂载文件系统时,直接调用你的
custom_mount
脚本。
这两种方法都避免了直接修改系统命令,而是通过外部配置来控制密码验证的行为。这使得管理更加灵活,也更容易适应不同的使用场景。
请记得将your_password_here
替换为你实际设置的密码,并确保配置文件或环境变量仅对授权用户可访问,以维护安全性。同时,确保custom_mount
脚本有适当的执行权限。
相关文章:

Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount
要实现这个功能,可以通过创建一个自定义的mount命令的包装器(wrapper)来完成。这个包装器脚本会首先提示用户输入密码,如果密码正确,则执行实际的mount命令。以下是创建这样一个包装器的步骤: 创建一个名为…...

【网络协议】----IPv6协议报文、地址分类
【网络协议】----IPv6协议简介 【网络协议】----IPv6协议简介IPv6特点IPv4 和 IPv6报文结构IPv6报文格式-拓展报头 IPv6地址分类IPv6地址表示IPv6单播地址可聚合全球单播地址链路本地地址唯一本地地址特殊地址补充 接口标识(主机位)生成方法通过EUI-64规…...

Llama改进之——SwiGLU激活函数
引言 今天介绍LLAMA模型引入的关于激活函数的改进——SwiGLU1,该激活函数取得了不错的效果,得到了广泛地应用。 SwiGLU是GLU的一种变体,其中包含了GLU和Swish激活函数。 GLU GLU(Gated Linear Units,门控线性单元)2引入了两个不同的线性层…...

在数据分析中所需要运用到的概率论知识
数据分析 前言一、总体二、样本三、统计抽样抽取的基本准则 四、随机抽样抽签法随机数法 五、分层抽样六、整群抽样七、系统抽样八、统计参数常用的分布函数参数 九、样本统计量十、样本均值和样本方差十一、描述样本集中位置的统计量样本均值样本中位数样本众数 十二、描述样本…...

韩顺平0基础学Java——第6天
p87-p109 运算符(第四章) 四种进制 二进制用0b或0B开头 十进制略 八进制用0开头 十六进制0x或0X开头,其中的A—F不区分大小写 10转2:将这个数不断除以2,直到商为0,然后把每步得到的余数倒过来&#…...
react18子组件设置接收默认值和值类型验证
父组件传值 import ChildCom from ./components/ChildCom export default function Person {return(<div><ChildCom name"alan-ben" age{18} score{[98, 97, 100]} /></div>) } 子组件接收并验证类型 import React from react import PropTypes…...
Java 高级面试问题及答案(二)
Java高级面试问题及答案 1. 在Java中,什么是强引用、软引用、弱引用和虚引用,它们有什么区别? 答案: 在Java中,引用类型决定了对象的生命周期,主要有以下四种: 强引用:最常见的引…...

数据统计:词频统计、词表生成、排序及计数、词云图生成
文章目录 📚输入及输出📚代码实现 📚输入及输出 输入:读取一个input.txt,其中包含单词及其对应的TED打卡号。 输出 output.txt:包含按频率降序排列的每个单词及其计数(这里直接用于后续的词云…...

W801学习笔记二十四:NES模拟器游戏
之前已经实现了NES模拟器玩游戏。W801学习笔记九:HLK-W801制作学习机/NES游戏机(模拟器) 现在要在新版本掌机中移植过来。 1、把NES文件都拷贝到SD卡中。 这回不会受内存大小限制了。我这里拷贝了4个,还可以拷贝更多。 2、应用初始化中,加载…...

ECMAScript 6简介
ECMAScript 6简介 发布日期目标ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 ESx标准 命名规则 ECMAScript 的历史 1. ECMAScript 6简介 1.1. 发布日期 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已…...
第1个数据库:编号,文本,时间,
写一个数据库 编号 文本 时间1 第一个文本 有100万条数据 -- 创建一个名为texts的表格来存储数据 CREATE TABLE texts ( id INTEGER PRIMARY KEY, text TEXT, time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);-- 插入数据INSERT INTO texts (text) VALUES (第一个文…...

线性数据结构-手写链表-LinkList
为什么需要手写实现数据结构? 其实技术的本身就是基础的积累和搭建的过程,基础扎实 地基平稳 万丈高楼才会久战不衰,做技术能一通百,百通千就不怕有再难得技术了。 一:链表的分类 主要有单向,双向和循环链表…...
快手客户端一二面+美团前端一面+腾讯企业微信开发客户端一面
快手一面结志 1、自我介绍 2、对称加密非对称加密 3、TCP/UDP 4、在学校有什么课程是强项,说了过去几次面试中面到的C的语言基础知识 5、问C、Java中兴趣在哪里 6、问到项目,自己做的还是跟着学校老师做的,同样问到兴趣在哪里 7、LRU …...

探索数据结构
什么是数据结构 数据结构是由:“数据”与“结构”两部分组成 数据与结构 数据:如我们所看见的广告、图片、视频等,常见的数值,教务系统里的(姓名、性别、学号、学历等等); 结构:当…...

VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、张正友相机标定法1. 工具的准备2. 标定的步骤(1) 启动相机(2) 启动标定程序(3) 标定过程的操作(5)可能的报错 3. 标定文件内容解析 前言 张正友相机标定法…...

每日OJ题_记忆化搜索②_力扣62. 不同路径(三种解法)
目录 力扣62. 不同路径 解析代码1_暴搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 力扣62. 不同路径 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器…...

【微信小程序开发】微信小程序、大前端之flex布局方式详细解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

代码随想录算法训练营第二十天:二叉树成长
代码随想录算法训练营第二十天:二叉树成长 110.平衡二叉树 力扣题目链接(opens new window) 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝…...
Opensbi初始化分析:设备初始化-warmboot
Opensbi初始化分析:设备初始化-warmboot 设备初始化sbi_init函数init_warmboot函数coolboot & warmbootwait_for_coldboot函数domain && scratch(coldboot所特有)console初始化及print相关工作(coldboot所特有)系统调用的相关初始化(coldboot所特有)综上设备…...
软考 系统架构设计师系列知识点之软件可靠性基础知识(13)
接前一篇文章:软考 系统架构设计师系列知识点之软件可靠性基础知识(12) 所属章节: 第9章. 软件可靠性基础知识 第3节 软件可靠性管理 为了进一步提高软件可靠性,人们又提出了软件可靠性管理的概念,把软件可…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...

DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
Python爬虫(四):PyQuery 框架
PyQuery 框架详解与对比 BeautifulSoup 第一部分:PyQuery 框架介绍 1. PyQuery 是什么? PyQuery 是一个 Python 的 HTML/XML 解析库,它采用了 jQuery 的语法风格,让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...