不具有读取权限执行脚本 [英] Execute script without reading permissions

查看:19
本文介绍了不具有读取权限执行脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望允许用户执行包含敏感数据的bash脚本。因此,我不希望他们拥有读取权限。直接解决方案seems to be impossible,但我可能已经在expect man page中找到了解决办法:

像往常一样创建Expect脚本(包含秘密数据)。 使其权限为750(-rwxr-x-)并由受信任组拥有, 即被允许阅读它的组。如有必要,创建一个新的 集团为此目的。接下来,创建一个具有权限的/bin/sh脚本 2751(-rwxr-s--x)属于与以前相同的组。

我尝试按如下方式复制: 在一个文件夹中,我有两个脚本:

script.sh:

#!/bin/sh
echo "targetscript echo"

runscript.sh:

#!/bin/sh
echo "runscript echo"
groups
./script.sh

我按照手册页中的建议为他们提供了权限:

groupadd scriptrunner
chown {myusername}:scriptrunner runscript.sh
chmod 2751 runscript.sh
chown root:scriptrunner script.sh
chmod 750 script.sh

ls -l的输出似乎正常:

-rwxr-s--x. 1 {myusername} scriptrunner 51 Aug 25 13:04 runscript.sh
-rwxr-x---. 1 root         scriptrunner 35 Aug 25 13:01 script.sh

但是,当我在没有超级用户的情况下运行./runscript.sh时,我收到以下错误:

runscript echo
{myusername} wheel
./runscript.sh: line 4: ./script.sh: Permission denied

我不知道哪里出了问题。有人能帮帮我吗?

推荐答案

我将回到根本问题,因为我认为没有Expect黑客更容易解决。

因此,您需要的是拥有对您的脚本的执行权限,而不是读取权限。这仅适用于二进制文件(即未解释的脚本)-请参阅此处https://unix.stackexchange.com/questions/34202/can-a-script-be-executable-but-not-readable

的详细信息 因此,如果您首先将bash脚本编译为二进制文件(使用SHC-请参阅此处https://unix.stackexchange.com/questions/64762/how-to-convert-a-shell-script-into-a-binary-executable),然后在该二进制文件上设置只执行权限,可能会更好。之后,您的用户应该能够执行(但不能读取)二进制文件。

这篇关于不具有读取权限执行脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆