请问如何在加密后执行脚本(bash)而不解密它?
我想只授予对脚本的执行访问权限并使其不可读。
我用它来加密我的脚本
openssl enc -aes-256-cbc -salt -in test.sh -out test.sh.enc -k $Password
编写你的秘密 bash 脚本:
secret.sh
#!/usr/bin/env bash
printf 'Hello the world from my secret encrypted bash script!\n'
加密您的
secret.sh
:
openssl enc -aes-256-cbc -salt -in secret.sh -out secret.sh.enc -k "$Password"
编写一个能够解码并执行嵌入的加密 bash 脚本的加载器:
secret-loader.sh
#!/usr/bin/env bash
read -rsp 'Enter password: ' password
echo
{
IFS= read -rd '' # Read through launcher and leave binary blob
if ! openssl enc -d -aes-256-cbc -k "$password" > /dev/null 2>&1; then
printf 'Invalid password!\n' >&2
exit 1
fi
} < "${BASH_SOURCE[0]}"
{
IFS= read -rd ''
openssl enc -d -aes-256-cbc -k "$Password" 2> /dev/null | bash
} < "${BASH_SOURCE[0]}"
exit
结合加载器和加密的有效负载:
{ cat secret-loader.sh; printf '\0'; cat secret.sh.enc;} > encripted
chmod +x encrypted
现在运行新的加密 bash 脚本:
./encrypted