You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加密Bash脚本后无需解密直接执行并仅开放执行权限?

加密Bash脚本后无需解密直接执行的方法

方法一:OpenSSL加密+包装执行脚本

  1. 加密原脚本(你已完成此步骤):
    openssl enc -aes-256-cbc -salt -in test.sh -out test.sh.enc -k $Password
    
  2. 创建执行包装脚本(命名为run_test.sh):
    为避免明文密码泄露,推荐通过环境变量传递密码:
    #!/bin/bash
    # 从环境变量取密码,解密后直接通过bash执行,不生成明文文件
    openssl enc -aes-256-cbc -d -salt -in test.sh.enc -k "$SCRIPT_PASSWORD" | bash
    
  3. 设置权限:
    • 加密脚本仅对所有者可读:
      chmod 600 test.sh.enc
      
    • 包装脚本仅对所有者可执行:
      chmod 700 run_test.sh
      
  4. 执行方式:
    SCRIPT_PASSWORD="你的加密密码" ./run_test.sh
    
    若能接受脚本内明文密码(有泄露风险),可直接把密码写在包装脚本里,执行时无需输入密码:
    #!/bin/bash
    PASSWORD="你的加密密码"
    openssl enc -aes-256-cbc -d -salt -in test.sh.enc -k "$PASSWORD" | bash
    

方法二:用shc编译为二进制可执行文件

shc可把shell脚本转成二进制可执行文件,生成的文件无法直接读取原脚本内容,执行无需解密步骤:

  1. 安装shc:
    Ubuntu/Debian系统:
    sudo apt install shc
    
    CentOS/RHEL系统:
    sudo yum install shc
    
  2. 编译脚本:
    shc -f test.sh -o test_exec
    
    参数-f指定原脚本,-o指定生成的二进制文件名
  3. 设置权限并运行:
    chmod 700 test_exec
    ./test_exec
    

注意事项

  • OpenSSL方法中,密码存储是核心问题:明文写在脚本里有泄露风险,用环境变量相对安全,但需防范环境变量通过ps等命令泄露。
  • shc生成的二进制文件并非绝对安全,存在逆向破解可能,但足以应对普通场景需求。

内容的提问来源于stack exchange,提问作者RACHID OUBELK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:17:19