我想要一个shell脚本是可执行的,但不可读

我创build了一个脚本,我希望我们的共享系统上的其他用户执行但不能读取。 我将所有的权限设置为可执行权限,但撤销了R / W权限。

---x--x--x 1 dilletante staff 0 2013-04-02 11:42 expect.sh 

然而脚本不能执行…原因很简单.. 解释器也需要读取脚本

我想要一个解决方法,如果有的话……我可以将它embedded到一些编译语言中。那可以工作吗? 如果是的话,你能指出我可以学习如何做的资源..

Solutions Collecting From Web of "我想要一个shell脚本是可执行的,但不可读"

shell必须能够读取脚本才能执行它。 如果是剧本,你就要求不可能。

您当然可以对可执行程序(由ld命令生成,通常由您选择的编译的实现语言的编译器调用)使用111权限。 所有者可以随时更改权限以阅读该程序,但使用511比111权限更为传统。

通常有一种特定脚本语言的编译器会生成一个与脚本相当的C程序:

  • 编译器的shell脚本 。
  • 如何将Linux shell脚本编译为二进制文件
  • 编译shell脚本 。
  • shc – shell脚本编译器 。

等等。

如果你想为其他用户尝试sudo

例:

  1. 改变执行权

     chmod 500 /usr/bin/script.bash ll /usr/bin/script.bash -rx------ 1 <USER> <GROUP> 1174 23. Jan 13:24 /usr/bin/script.bash 
  2. 作为根改变的sudoers

     visudo ## Allows ALL to run /usr/bin/script.bash as <USER> without password ## The asterisk is if you want to use any commandline parameters ALL ALL=(<USER>) NOPASSWD: /usr/bin/script.bash * 
  3. 用sudo运行脚本

     sudo /usr/bin/script.bash <PARAMETERS> 

有关sudo的更多信息,请阅读sudo手册

有一个保护你的shell脚本的选择。 既然这里的目标是确保没有人可以阅读或改变它们,你可能想要尝试下面的链接:

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

在上面的页面中,你所要做的就是提交你的shell脚本(你可以首先提交一个脚本示例,让你放心)。 将为您生成一个zip文件。

安装:

  1. wget链接到该zip文件
  2. 解压缩新下载的zip文件
  3. cd / tmp / KingLazySHIELD
  4. ./install.sh / var / tmp / KINGLAZY / SHIELDX-(脚本名称)/ bin -force

上面的安装命令会为你做什么是:

  1. 它会将加密的脚本安装在目录/ var / tmp / KINGLAZY / SHIELDX-(脚本名称)中。

  2. 它会把这个加密脚本的链接放到/ bin中 – 这样,每次运行脚本时都不需要输入脚本的绝对路径。

  3. 确保没有人可以修改脚本 – 任何尝试修改加密的脚本将使其无法操作…直到删除尝试。

  4. 确保绝对没有人可以制作它的工作副本。 没有人可以将您的脚本复制到一个僻静的地方,并尝试拧它,看看它是如何工作的。 如果他们尝试,它会中止,不会运行。

我做了自己的bash混淆器,以克服shc的一些缺陷,这些缺陷真的使我感到困扰(主要原因是能够使用ps以几乎明确的文本查看脚本)。 你可以看一下,如果https://github.com/louigi600/obash为你提供更好的shc&#x3002;