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


    要实现这个功能,可以通过创建一个自定义的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" ]; 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. 给这个脚本执行权限:

      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/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. 在需要时设置环境变量:在需要密码验证的情况下,运行脚本或命令之前,设置环境变量。
    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" ]; 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脚本有适当的执行权限。

  • 相关阅读:
    Taurus .Net Core 微服务开源框架:Admin 插件【2】 - 系统环境信息管理 - 【OS、Assembly】
    docker-ubuntu
    CSwin Transformer 学习笔记
    【HTML5入门指北】第二篇 网页相关的标签
    46.【数据结构 绪论(01)】
    Rust星号(*)的作用-基础篇
    Linux进程总结详解(上——初识)
    Docker-----emqx部署
    7 张图解 CrashLoopBackOff,如何发现问题并解决它?
    yaml-cpp YAML格式处理库的介绍和使用(面向业务编程-文件格式处理)
  • 原文地址:https://blog.csdn.net/weixin_43431218/article/details/138559688