我想允许用户执行包含敏感数据的 bash 脚本。因此,我不希望他们拥有阅读权限。 “直接”解决方案似乎不可能,但我可能已经找到了解决方法期待手册页:
像往常一样创建 Expect 脚本(包含秘密数据)。
使其权限为 750 (-rwxr-x---) 并由受信任的组拥有,
即允许阅读它的组。如果需要,创建一个新的
为此目的而成立的团体。接下来,创建一个具有权限的/bin/sh脚本
2751 (-rwxr-s--x) 属于以前的同一组。
我尝试按如下方式复制此内容:
在一个文件夹中,我有两个脚本:
脚本.sh:
#!/bin/sh
echo "targetscript echo"
运行脚本.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
没有root,我收到以下错误:
runscript echo
{myusername} wheel
./runscript.sh: line 4: ./script.sh: Permission denied
我不知道出了什么问题。谁能帮我?
我将回到根本问题,因为我认为如果没有expect hack,解决起来会更容易。
因此,您需要的是对脚本具有执行权限,但不需要读取权限。这仅适用于二进制文件(即未解释的脚本) - 请参阅此处的详细信息https://unix.stackexchange.com/questions/34202/can-a-script-be-executable-but-not-可读
所以也许你首先将 bash 脚本编译成二进制文件会更好(使用 shc - 请参阅此处https://unix.stackexchange.com/questions/64762/how-to-convert-a-shell-script-into-a-binary-executable),然后设置二进制文件的仅执行权限。之后,您的用户应该能够执行(但不能读取)二进制文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)