Linux中每当执行‘mount’命令(或其他命令)时,自动激活执行脚本:输入密码,才可以执行mount

news/2024/9/22 15:38:32/

要实现这个功能,可以通过创建一个自定义的mount命令的包装器(wrapper)来完成。这个包装器脚本会首先提示用户输入密码,如果密码正确,则执行实际的mount命令。以下是创建这样一个包装器的步骤:

  1. 创建一个名为custom_mount的脚本文件,这个文件将作为mount命令的包装器。

  2. 在这个脚本中,首先提示用户输入密码,并进行验证。

  3. 如果密码正确,执行实际的mount命令。

  4. 如果密码错误,脚本将显示错误信息并退出。

  5. 将这个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替换为你想要的密码。

接下来,你需要执行以下步骤:

  1. 保存上述脚本到一个文件中,例如/usr/local/bin/custom_mount

  2. 给这个脚本执行权限:

    chmod +x /usr/local/bin/custom_mount
    
  3. (注意系统命令的实际路径位置,防止修改了原有的系统命令,具体可参考”问题“章节)创建一个mount的符号链接,指向你的包装器脚本:

    sudo ln -sf /usr/local/bin/custom_mount /usr/bin/mount
    

效果如下:
在这里插入图片描述

请注意,修改系统命令(如mount)需要管理员权限,并且可能会影响系统的稳定性和安全性。务必谨慎操作,并确保你完全理解每一步的后果。

另外,出于安全考虑,不建议将明文密码存储在脚本中。可以考虑使用更安全的方法来验证密码,如使用sudo或密钥认证。此外,如果你的系统有多个用户,你可能需要为每个用户设置不同的密码,或者使用集中式认证系统。

问题:如果更改了系统原有命令,会出现重复输入密码问题

查看系统实际命令的位置: which mount

1.移动原有命令到其他路径下,脚本中调用实际命令时填写 移动后的路径下的命令!
2.将系统命令默认的位置,创建软连接,指向脚本文件。

使用环境变量或配置文件来实现挂载前的密码验证

使用环境变量或配置文件来实现挂载前的密码验证,可以避免直接修改或替换系统命令,从而减少潜在的风险。以下是两种可能的方法:

方法一:使用环境变量

  1. 设置环境变量:创建一个环境变量,比如MOUNT_REQUIRES_PASSWORD,并在需要密码验证时将其设置为1

  2. 修改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
  1. 在需要时设置环境变量:在需要密码验证的情况下,运行脚本或命令之前,设置环境变量。
export MOUNT_REQUIRES_PASSWORD=1

方法二:使用配置文件

  1. 创建配置文件:创建一个配置文件,比如/etc/mount_password.conf,并在其中设置密码。
# /etc/mount_password.conf
PASSWORD=your_password_here
  1. 修改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
  1. 在需要时调用脚本:在需要挂载文件系统时,直接调用你的custom_mount脚本。

这两种方法都避免了直接修改系统命令,而是通过外部配置来控制密码验证的行为。这使得管理更加灵活,也更容易适应不同的使用场景。

请记得将your_password_here替换为你实际设置的密码,并确保配置文件或环境变量仅对授权用户可访问,以维护安全性。同时,确保custom_mount脚本有适当的执行权限。


http://www.ppmy.cn/news/1458423.html

相关文章

【论文笔记 | 异步联邦】FedSA

FedSA:一种处理 non-IID 数据 的 过时感知 异步联邦算法 1. 论文信息 FedSA:A staleness-aware asynchronous Federated Learning algorithm with non-IID data,Future Generation Computer Systems,2021.7,ccfc 是…

C语言关键字 typedef 的功能是什么?

一、问题 语⾔有 32 个关键字,其中 int 的功能是声明整型变量,struct 的功能是声明结构体变量,那么 typedef 的功能是什么呢? 二、解答 1. typedef 的功能 在 C 语⾔中除了可以使⽤标准类型名(如 int、 char、float …

CGAL在ubuntu下的安装及Hello World的测试

ubuntu下的安装 CGAL安装 参考地址:https://doc.cgal.org/latest/Manual/usage.html 在ubuntu下安装: sudo apt-get install libcgal-dev 安装后的路径: 注意安装这个步骤安装后,boost,CGAL,gmp,mpfr头文件都在/usr/include目录下。 boost,gmp,mpfr库文件都在/…

【快捷部署】024_Hive(3.1.3)

📣【快捷部署系列】024期信息 编号选型版本操作系统部署形式部署模式复检时间024Hive3.1.3Ubuntu 20.04tar包单机2024-05-07 一、快捷部署 #!/bin/bash ################################################################################# # 作者:cx…

PyCharm 2024新版图文安装教程(python环境搭建+PyCharm安装+运行测试+汉化+背景图设置)

名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Python环境搭建二、PyCharm下载及安装三、解释器配置及项目测试四、PyCharm汉化五、背景图设置 很高兴你打开了这篇博客,如有疑问&#x…

旧物回收小程序开发:打造绿色生活,共筑美好未来

随着环保意识的逐渐增强,我们越来越意识到旧物回收的重要性。为了响应这一趋势,我们精心研发了一款旧物回收小程序,旨在通过科技的力量,让每个人都能够轻松参与到旧物回收的行动中来,共同为地球环保贡献一份力量。 一…

从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习

jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…

C# config配置文件 读取

<?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"deviceFieldConfig" type"ConfigurationSectionDemo.DeviceFieldonfig,ConfigurationSectionDemo" /></configSe…