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

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

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

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

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

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

  5. 将这个custom_mount脚本的路径添加到系统的PATH环境变量中(参考使用换将变量或配置文件章节),或者创建一个符号链接,使得custom_mount可以在任何地方通过mount命令来调用。

下面是一个简单的custom_mount脚本示例:

bash 复制代码
#!/bin/bash

# 预期的正确密码
CORRECT_PASSWORD="your_password_here"

# 密码提示
read -s -p "Enter mount password: " USER_PASSWORD

# 检查输入的密码是否正确
if [ "$USER_PASSWORD" == "$CORRECT_PASSWORD" ]; then
    echo "Password correct. Proceeding with mount command."
    # 执行实际的mount命令
    /usr/bin/mount "$@"
else
    echo "Error: Password incorrect. Mount command aborted."
    exit 1
fi

请将your_password_here替换为你想要的密码。

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

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

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

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

    bash 复制代码
    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命令。

bash 复制代码
#!/bin/bash

if [ "$MOUNT_REQUIRES_PASSWORD" == "1" ]; then
    # 预期的正确密码
    CORRECT_PASSWORD="your_password_here"

    # 密码提示
    read -s -p "Enter mount password: " USER_PASSWORD
    echo # Move to a new line after hidden password input

    # 检查输入的密码是否正确
    if [ "$USER_PASSWORD" == "$CORRECT_PASSWORD" ]; then
        echo "Password correct. Proceeding with mount command."
        /usr/bin/mount "$@"
    else
        echo "Error: Password incorrect. Mount command aborted."
        exit 1
    fi
else
    # 如果环境变量没有设置为1,直接调用mount命令
    /usr/bin/mount "$@"
fi
  1. 在需要时设置环境变量:在需要密码验证的情况下,运行脚本或命令之前,设置环境变量。
bash 复制代码
export MOUNT_REQUIRES_PASSWORD=1

方法二:使用配置文件

  1. 创建配置文件 :创建一个配置文件,比如/etc/mount_password.conf,并在其中设置密码。
bash 复制代码
# /etc/mount_password.conf
PASSWORD=your_password_here
  1. 修改custom_mount脚本:修改你的脚本,从配置文件中读取密码,并进行验证。
bash 复制代码
#!/bin/bash

# 从配置文件中读取密码
CONFIG_FILE="/etc/mount_password.conf"
CORRECT_PASSWORD=$(grep "^PASSWORD=" "$CONFIG_FILE" | cut -d '=' -f2)

if [ -z "$CORRECT_PASSWORD" ]; then
    echo "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" ]; then
    echo "Password correct. Proceeding with mount command."
    /usr/bin/mount "$@"
else
    echo "Error: Password incorrect. Mount command aborted."
    exit 1
fi
  1. 在需要时调用脚本 :在需要挂载文件系统时,直接调用你的custom_mount脚本。

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

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

相关推荐
云祺vinchin2 分钟前
IT行业数据备份实例:安全备份+秒级恢复
安全·数据备份·数据归档·容灾备份
网络安全零基础教程4 分钟前
零基础转行网安,前两个月具体该学什么工具
网络·学习·安全·web安全·网络安全
MetrixAeroCore12 分钟前
出海餐厅手持POS机物联网卡:多币种计费稳定传输与跨境税务合规对接方案
运维
路由侠内网穿透.14 分钟前
本地部署开源日志收集系统 Log Bull 并实现外部访问
运维·服务器·网络·数据库·开源
时空无限28 分钟前
linux mellanox 网卡队列 irq rps 相关
linux·运维
AlbertS1 小时前
Let‘s Encrypt 证书自动续期并自动应用到Nginx
运维·nginx·ssl·cerbot·renew·续期
kdxiaojie1 小时前
Linux 驱动研究 —— V4L2 (14)
linux·运维·笔记·学习
IMPYLH1 小时前
HTML 的 <dl> 元素
linux·windows·html
如若1231 小时前
Ubuntu 无 sudo 安装花生壳并实现 SSH 内网穿透:Conda 环境部署、冲突排查与自动启动
linux·运维·ubuntu·ssh·内网穿透
承渊政道1 小时前
Linux系统学习【掌握Ext系列⽂件系统的相关内容】
linux·运维·学习·文件系统·存储结构·inode